我们应该如何使用异步等待?[复制]

这个问题在这里已经有了答案: * C # 中 “返回等待” 的目的是什么? [/questions/19098143/what-is-the-purpose-of-return-await-in-c]7 个答案 * 如何以及何时使用 “异步” 和 “唤醒” [/questions/14455293/how-and-when-to-use-async-and-await]22 个答案 我正在研究如何使用异步等待,但是当我们有多个方法相互调用时,我不太明白。我们应该总是使用 await,还是只有当我们真正准备好使用结果时才使用 await? 例如,我们应该这样做吗: 异步任务 FooAsync () { 可变信息 = 等待 Func1 (); 返回信息。拆分 ('。'); } 异步任务 Func1 () { 返回等待 Func2 (); } 异步任务 Func2 () { 返回等待 tcpClient。ReadStringAsync (); } 或者像这样: 异步任务 FooAsync () { 可变信息 = 等待 Func1 (); 返回信息。拆分 ('。'); } 任务功能 ……

共5个回答,已解决, 标签: c# asynchronous async-await
为什么在异步函数中循环时, asyncas内可以正常工作, 而不是相反?

我有三个片段, 在 await 一个 promise 。 在第一个代码段中, 它的工作方式与我预期的一样, i 并且每个片段的价值都会降低 await 。 let i = 3; (async () => { while (i) { await Promise.resolve(); console.log(i); i--; } })(); 输出: 3 2 1 -------------------------------------------------------------------------------- 在第二个中, 值 i 不断递减, 直到它达到零, 然后 await 执行所有的 s。 let i = 3; while (i) { (async () => { await Promise.resolve(); console.log(i); })(); i--; } 输出: 0 0 0 ---------------------------------------------------------- ……

共4个回答, 标签: javascript async-await es6-promise
如果与 asyncn 等待 (从 SQL Server 中的流数据与 Dapper 流式传输数据) 一起使用, 则返回 Ieumerable 会发生什么情况?

我使用 Dapper 从 SQL Server 中非常大的集合中传输数据。它可以很好地返回 IEnumerable 和调用 Query() , 但当我切换到时 QueryAsync() , 程序似乎试图从 sql server 读取所有数据, 而不是流式传输。 根据这个问题 [https://stackoverflow.com/questions/13026558/explanation-of-dapper-buffer-cache] , 它应该很好地工作 buffered: false , 我正在做, 但这个问题没有说明 async/await 什么。 现在根据这个问题 [https://stackoverflow.com/questions/24966019/async-with-huge-data-streams], 做我想做的事情并不简单 QueryAsync() 。 我是否正确地理解在切换上下文时对枚举进行迭代? async/await 另一个问题是, 当新的 C#8 异步流可用时, 这是否是可能的事情? ……

共3个回答,已解决, 标签: c# sql-server async-await dapper c#-8.0
等待但从未解决/拒绝的承诺内存使用情况

威尔awaiting a Promise导致内存泄漏的既不解决也不拒绝 (从不解决/未实现)? 当我看着反应挂钩时,我对此很好奇Slorber/真棒-去抖-无极 [https://github.com/slorber/awesome-debounce-promise] 这创造了新的承诺,但只解决了最后一个承诺,从而让许多/大多数人感到不安/没有兑现。 ……

共2个回答,已解决, 标签: javascript async-await es6-promise
不等待异步呼叫仍然是异步的,对吗?

如果这是一个愚蠢的问题 (或重复),我很抱歉。 我有一个功能A: 公共异步任务 A (/* 一些参数 */) { Var 结果 = 等待一些其他函数 (/* 一些其他参数 */); 返回 (结果); } 我有另一个功能B, calling A但不使用返回值: 公共任务 B (/* 一些参数 */) { Var taskA = A (/* 参数 */);//#1 返回 (taskA); } 请注意B is not declared async and is not awaiting the call to A. The call to A is not a fire-and-forget call - B is called by C像这样: 公共异步任务 C () { 等待 B (/* 参数 */); } 注意,在#1是的,没有await. I have a coworker that claims that this makes the call to A synchronous and he keeps coming up with Console.WriteLine日志似乎证明 ……

共2个回答,已解决, 标签: c# .net asynchronous async-await
为什么等待和异步有效的变量名?

我正在试验如何 / 在围绕不同的关键字和运算符时解释, 并发现以下语法是完全合法的: // awaiting something that isn't a Promise is fine, it's just strange to do: const foo = await /barbaz/ myFn() 错误: > 未捕获引用错误: 未定义等待 它看起来像它试图解析 await 为一个变量名.我在等 > 等待仅在异步函数中有效 或者类似的东西 > 意外的令牌等待 令我感到恐怖的是, 你甚至可以给它分配东西: const await = 'Wait, this actually works?'; console.log(await); 难道不应该像它所做的那样, 出现如此明显的错误 let 吗 finally break ?为什么允许这样做, 第一个片段里到底发生了什么? ……

在. net 便携式库项目中使用异步/等待

这条线 StorageFile photo = await cameraUI.CaptureFileAsync(CameraCaptureUIMode.Photo); 给我这个错误: > 错误 CS0012 类型 "Iasync操作 < >" 是在未引用的程序集中定义的。您必须添加对程序集 "Windows.Foundation.FoundationContract、Version=3.0.0.0、区域性 = 中性、 如何修复它? screenshot [https://i.stack.imgur.com/VCsGM.png] [https://i.stack.imgur.com/VCsGM.png] ……

共0个回答, 标签: c# async-await portable-class-library
为什么异步类方法停止工作?

用于工作的以下代码 (声明为异步的类方法): 异步重新加载 () { 康斯特 { 重新定居, 获取照片, 上传照片, 这个道具。 等待 resetState () 等待 getPhotos () 等待上传照片 () } 升级到最新后 "应对外来": "0.59.8” 为了让它再次工作,必须将它重写到以下版本: 加载 () { 康斯特 { 重新定居, 获取照片, 上传照片, 这个道具。 然后 (() => { 然后 (() => { 上传照片 () }) }) } 否则,它会抱怨未兑现的承诺,并抱怨 resetState 方法是只读的。 有什么想法吗?我的大部分组件中都有异步方法,将它们重写为 promises 是不可行的解决方案。我真的很想从异步/等待中受益。 ……

共0个回答, 标签: javascript react-native ecmascript-6 async-await
CPU 基准测试: 任务 vs 线程池 vs 线程

我贴了这里的另一个问题 [https://stackoverflow.com/questions/56425062/threadpool-thread-doing-i-o-operation-can-thread-be-reused-while-waiting] 作为后续,我的同事做了一个测试,如下所示,作为异步/等待/任务参数的某种形式的 “计数器”。 (我知道,lock不需要在结果列表上,忽略这一点) * 我知道异步/等待和任务是不用于处理 CPU 密集型任务,而是处理操作系统完成的 I/O 操作。下面的基准测试是 CPU 密集型任务,所以测试从一开始就有缺陷。 * 然而,据我所知,使用new Task().Start() 将调度线程池上的操作,并在线程池上的不同线程上执行测试代码。这是否意味着第一次和第二次测试或多或少是一样的?(我猜不是,请解释一下 * 为什么他们之间的差异很大? enter image description here [https://i.stack.imgur.com/XEYfB.png] [https://i.stack.imgur.com/XEYfB. ……

共0个回答, 标签: c# multithreading async-await task