问题标签 [iasyncenumerable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4093 浏览

c# - 将 IAsyncEnumerable 与 Dapper 一起使用

我们最近将我们使用的 ASP.NET Core API 迁移Dapper到 .NET Core 3.1。迁移后,我们觉得有机会为我们的一个端点使用最新IAsyncEnumerable功能。C# 8

这是更改前的伪代码:

IAsyncEnumerable代码更改后:

上面的使用方法是从这篇文章ToAsyncEnumerable中获得灵感的,但我不能 100% 确定我是否在正确的地方/上下文中使用它。

问题:

  • dapper 库只返回IEnumerable,但我们可以用ToAsyncEnumerable它把它转换成上面IAsyncEnumerable的 forasync stream吗?

注意:这个问题看起来类似于如果与 async/await 一起使用,返回 IEnumerable 会发生什么(使用 Dapper 从 SQL Server 流式传输数据)?但我认为这不能回答我的问题。

0 投票
3 回答
688 浏览

c# - 在 foreach 循环中等待的正确方法

这是使用 async 使用 foreach 循环的正确方法吗?有没有更好更有效的方法?IAsyncEnumerable?(忽略两个表可以连接在一起的事实,这是一个简单的例子)

0 投票
1 回答
235 浏览

c# - 如何使用 SqlBulkCopy 编写 IAsyncEnumerable

我有以下方法返回一个IAsyncEnumerable<T>

我想使用SqlBulkCopy'sWriteToServerAsync方法将该结果流传输到数据库,但无法弄清楚如何将其转换为's 重载列表IDataReader中的任何其他类型。WriteToServerAsync

我愿意使用除批量复制之外的其他东西,只要它性能合理。

0 投票
1 回答
188 浏览

c# - 如何安全地处理使用 await foreach 检索到的 IAsyncDisposable 对象?

我可以这样做吗using var

或者我应该这样做:

还是因为迭代器是 anIAsyncDisposable并且await foreach会为我做它,所以我可以不进行处理吗?

0 投票
1 回答
5836 浏览

c# - .net 核心 3.1:'IAsyncEnumerable' 不包含 'GetAwaiter' 的定义

我有一个 .net core 3.1 控制台应用程序。

我有一个具有以下签名的方法:

如果我称之为:

我收到以下错误:

错误 CS1061“IAsyncEnumerable”不包含“GetAwaiter”的定义,并且找不到接受“IAsyncEnumerable”类型的第一个参数的可访问扩展方法“GetAwaiter”(您是否缺少 using 指令或程序集引用?)

0 投票
2 回答
1121 浏览

c# - 如何在项目准备好后立即解析 IAsyncEnumerables 列表

如果我向这个函数发送 25 个 ID。第一个 FindByIdsQuery 需要 5000 毫秒。其他 4 个 FindByIdsQuery 需要 100 毫秒。然后这个解决方案不会输出任何实体,直到 5000 毫秒之后。是否有任何解决方案可以在有任何人输出时立即开始输出实体。或者,如果您可以在 Task 中执行类似操作,则使用Task.WhenAny.

需要明确的是:5 个查询中的任何一个都可能需要 5000 毫秒。

0 投票
1 回答
1473 浏览

c# - 如何等待 IAsyncEnumerable 的结果>,具有特定的并发级别

我有一个异步任务流,它是通过将异步 lambda 应用于项目流而生成的:

方法AsyncEnumerable.RangeSelect以上是从System.Linq.Async包中提供的。

我想要的结果是一个结果流,表示为IAsyncEnumerable<string>. 结果必须按照与原始任务相同的顺序进行流式传输。此外,必须限制流的枚举,因此在任何给定时间都不能超过指定数量的任务处于活动状态。

我想要一个类型的扩展方法形式的解决方案IAsyncEnumerable<Task<T>>,以便我可以多次链接它并形成一个处理管道,在功能上与TPL Dataflow管道相似,但表达流畅。以下是理想扩展方法的签名:

也接受CancellationTokenas 参数将是一个不错的功能。


更新:为了完整起见,我提供了一个通过链接两次AwaitResults方法形成的流畅处理管道的示例。此管道以 PLINQ 块开始,只是为了证明混合 PLINQ 和 Linq.Async 是可能的。

预期输出:

结果:1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、19、20


注意:回想起来,AwaitResults方法可能应该命名为Merge,而concurrencyLevel参数应该命名为maxConcurrent,因为它的功能类似于RxMerge中存在的运算符。System.Interactive.Async包确实包含一个名为 s 的运算符,它的所有重载都不会对源进行操作。它在和来源上运作。还可以添加一个参数,以便明确控制等待/合并操作所需的缓冲区大小。MergeIAsyncEnumerable<T>IAsyncEnumerable<Task<T>>IEnumerable<IAsyncEnumerable<TSource>>IAsyncEnumerable<IAsyncEnumerable<TSource>>bufferCapacity

0 投票
2 回答
830 浏览

c# - 如何聚合 IAsyncEnumerable 的结果

我想问是否有计划或存在一种方法来汇总一个或多个收益IAsyncEnumerable?那么鉴于以下方法,为什么没有简洁的方法来汇总其结果?

当前情景

所需场景

我想聚合IAsyncEnumerable给定自定义聚合的结果Func

PS我不喜欢(在第一种情况下)我必须添加一个额外的局部变量accum来收集可枚举的结果。我错过了什么吗,是否有一些我不知道的语法糖?

0 投票
1 回答
1237 浏览

c# - 如何与异步 foreach 和 IAsyncEnumerable 一起返回 ActionResult

我有这个签名的控制器方法:

它工作正常,但我需要做一些请求验证并相应地返回 401、400 和其他代码,它不支持。或者,以下签名无法编译:

错误:

无法将类型“Microsoft.AspNetCore.Mvc.UnauthorizedResult”隐式转换为“MyApi.Responses.MyDto”

完整的方法:

有任何想法吗?似乎无法相信微软已经设计IAsyncEnumerable为在没有返回其他任何东西的可能性/灵活性的情况下使用。

0 投票
2 回答
773 浏览

c# - 不可能两次运行 IAsyncEnumerable 的枚举?

IAsyncEnumerable不可能运行两次枚举?

一旦CountAsync运行,await foreach将不会枚举任何项目。为什么?似乎没有重置方法AsyncEnumerator

数据来源: