在 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?