【发布时间】:2020-09-08 13:24:09
【问题描述】:
我正在尝试使用返回 IAsyncEnumerable 的 API
public async IAsyncEnumerable<Xtype> Get([Required]int maxx=10)
{
var result = _context.dbcontext.Take(maxx).AsAsyncEnumerable();
await foreach (var Xtype in y)
{
await Task.Delay(1000);
yield return Xtype;
}
}
但我会在 10 秒后得到结果,但我认为我会在每一秒后开始得到结果
【问题讨论】:
-
这里的 XType 和 y 是什么?!请编辑您的问题,它完全不清楚并更正其格式问题。
-
HTTP 不允许流式传输结果。返回
IAsyncEnumerable并不意味着服务将为每个项目返回单独的 HTTP 响应 - 没有这样的事情。如果要向服务器返回数据流,则需要使用 SignalR 或 gRPC 和服务器流。 -
XType 是我要返回的一些返回类型
-
当您返回
IAsyncEnumerable时,any 堆栈或语言中的 HTTP 服务仍将返回一个响应,并在响应流到达时将每个项目写入响应流。与IEnumerable的不同之处在于中间件不必阻塞等待每个项目的生成 -
网络上真的一样!简而言之,async/await 仅在其进程域中具有优势。不通过网络
标签: c# entity-framework rest async-await