草庐IT

Async-await

全部标签

Node.js、Mongo async.js 插入和查询

我想要完成的事情:我查询其中包含大量文档的集合(对话)。对于集合中的每个文档/对话,我想查询另一个集合(用户),以查看是否存在与该对话中的ID属性匹配的现有用户记录。所以基本上我想看看是否存在附加到对话的用户的用户记录。Users={uid:someNumber,一堆其他属性};我知道这是node.js异步特性的问题。我一直在尝试使用async.js通过回调来解决这个问题。但我想我可能弄错了,或者没有正确使用它。问题是对话数组中的每个对话项都在查询一个项目,但是,因为“保存”尚未完成,“查找”查询永远看不到有记录已经插入。这是我的代码。也许我在做一些明显错误的事情?所以本质上,检查se

javascript - 需要在async find操作里面修改json和return

我需要遍历对象ID列表,找到一个用户,然后修改json对象并返回它。我研究了bluebird,但下面的代码没有按照我的意愿执行。返回后好像修改了json对象。我尝试返回user["test"]="lol"但它只返回“test”的值,而我需要整个更新的json。Promise.map(['5781635026d6fad4486d81e9','578296e31029e27b4ea53e9d'],function(i){returnUser.findOneAsync({_id:i}).then(function(user){user["test"]="lol";returnuser;});

c# - 通过线程经济的可扩展性 : async operations vs. 线程池上的多线程生产者/消费者队列?

异步编程是一种通过线程经济实现Web服务器可扩展性的方法,因此很少的非阻塞线程可以处理许多同时发生的请求。例如,Node.js使用异步操作仅使用单个线程即可实现可伸缩性。我目前正在使用数据库MongoDb,它是官方的C#驱动程序,尚不支持异步操作。因此,我正在考虑使用一个简单的生产者/消费者队列来处理mongodb请求,以减少阻塞线程的数量。这是通过让线程池线程在队列中插入数据库请求然后让它们继续执行其他任务来完成的。该队列还有一个专用线程执行实际的数据库请求,当请求返回结果时,结果将移交给线程池线程。但是,我现在想知道在使用线程池时是否有必要使用队列(通过C#4.0中的TPL和任务)

c# - 未等待嵌套异步 lambda

以下代码不会返回它迭代的整个集合。返回的数组在每次运行时具有任意长度。怎么了?publicasyncTaskGetClients(){varclientInfoCollection=newConcurrentBag();await_client.Iterate(async(client)=>{clientInfoCollection.Add(newClientInfoModel{name=client.name,userCount=await_user.Count(clientId)});});returnOk(clientInfoCollection.ToArray());}以下代码

C# Mongo FirstOrDefaultAsync 挂起

使用2.0驱动程序,以下代码有时会挂起并且永远不会返回。publicasyncTaskGetFirst(FilterDefinitionquery){returnawaitGetCollection.Find(query).FirstOrDefaultAsync();}如果我首次亮相并在返回线上放置一个断点,一切都会正常返回。在shell中,正在运行的查询是这样的:db.Customers.find({"Name":/test$/i}) 最佳答案 有两种解决方案:添加ConfigureAwait(false)最后:returnawa

.net - Mongodb .net 异步等待

mongodb.net驱动程序是否支持异步/等待操作?我似乎找不到这方面的任何信息。我正在寻找类似EntityFramework的东西:ToListAsync(),FindAsync(),CountAsync()这是否受支持? 最佳答案 2.0驱动发布。检查一下:https://github.com/mongodb/mongo-csharp-driver核心:https://www.nuget.org/packages/MongoDB.Driver 关于.net-Mongodb.net异

node.js - 错误 : connect EADDRNOTAVAIL while processing big async loop

我遇到了一个非常奇怪的问题。我正在导入一些大的xml文件并将它们存储到mongoDB中。该算法是一个典型的异步循环:doLoop=function(it,callback_loop){if(it现在(代码突然没有任何显着变化)在执行循环时出现以下错误:events.js:72thrower;//Unhandled'error'event^Error:connectEADDRNOTAVAILaterrnoException(net.js:901:11)atconnect(net.js:764:19)atnet.js:842:9atdns.js:72:18atprocess._tickCa

node.js - Node.js async eachLimit 在这种情况下如何工作?

我写了一点async用于将大量JSON文件批量插入MongoDB分片集群的脚本。这是我第一次使用此模块(我仍在学习Node.js)。我不知道我这样做对不对。代码是waterfall的最后一部分(一):前面的函数结束使用具有db、coll和files属性的对象。files数组包含数百个文件路径和函数应用到数组的每个元素也是一个waterfall(2)。waterfall(2)由以下部分组成:读取、解析、插入。当这个waterfall结束时(3)我调用complete来完成数组中单个项目的处理,并传递错误(如果有)。到目前为止一切顺利,对吗?我无法理解的是async.eachLimit回调

C# async / await 用法

目录一、简介二、异步等待返回结果三、异步方法返回类型四、awaitforeach五、Task.Delay结束一、简介await运算符暂停对其所属的async方法的求值,直到其操作数表示的异步操作完成。异步操作完成后,await运算符将返回操作的结果(如果有)。当await运算符应用到表示已完成操作的操作数时,它将立即返回操作的结果,而不会暂停其所属的方法。await运算符不会阻止计算异步方法的线程。当await运算符暂停其所属的异步方法时,控件将返回到方法的调用方。二、异步等待返回结果下面就演示await运算符常用的一些用法。新建一个基于.Net6的Winform项目,界面就两个按钮,如下:代

c# - 我应该使用 c# mongodb 驱动程序的同步方法还是异步方法?

在c#mongodbdriver中,同步和异步两种方法都可用,如下所示?_mongoCollection.InsertOneAsync(entity);_mongoCollection.Insert(entity);我相信,在大多数情况下,数据访问层中异步完成的工作量非常少。所以我正在等待数据库调用,如下所示:await_mongoCollection.InsertOneAsync(entity);await_mongoCollection.DeleteOneAsync(query);await_mongoCollection.Find(query).ToListAsync();现在我