在ASP.NET Web API项目中浏览IAsyncEnumerable时遇到了一个有趣的行为。考虑以下代码示例:
// Code Sample 1
[HttpGet]
public async IAsyncEnumerable<int> GetAsync()
{
for (int i = 0; i < 10; i++)
{
await Task.Delay(1000);
yield return i;
}
}
// Code Sample 2
[HttpGet]
public async IAsyncEnumerable<string> GetAsync()
{
for (int i = 0; i < 10; i++)
{
await Task.Delay(1000);
yield return i.ToString();
}
}
示例1(int数组){}
作为JSON结果返回。
样本2返回预期结果["0","1","2","3","4","5","6","7","8","9"]
。但是,等待10秒后立即返回整个JSON数组。当数据从IAsyncEnumerable接口获得预期的可用性时,是否应该将其返回?还是应该使用此Web API的任何特定方式?
4
当数据从IAsyncEnumerable接口获得预期的可用性时,是否应该将其返回?...而且确实...但是对于json序列化程序
—
Selvin
和样本1 ....似乎是非引用类型的错误(如果更改
—
Selvin
IAsyncEnumerable<int>
为IAsyncEnumerable<object>
-应该可以工作,但是会涉及拳击)
@Selvin,请您详细说明一下?还是指向代码示例?我尝试使用C#客户端使用此API,结果是一样的,必须等待10秒钟...
—
Ravi M Patel
必须等待10秒钟,这很麻烦...序列化在服务器端,并且不是异步的...详细说明什么?
—
Selvin