我在探索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"]
。然而,整个JSON数组在等待10秒后一次性返回。它不应该按照从IAsyncEnumerable接口预期的当数据变得可用时被返回吗?或者有没有特定的方式应该消耗这个Web API?
IAsyncEnumerable<int>
更改为IAsyncEnumerable<object>
- 它应该可以工作,但是这样会涉及到装箱) - Selvin