Bir ASP.NET Web API projesinde IAsyncEnumerable keşfederken ilginç bir davranışla karşılaştı. Aşağıdaki kod örneklerini göz önünde bulundurun:
// 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();
}
}
Örnek 1 (int dizisi) {}
JSON sonucu olarak döner .
Örnek 2 beklenen sonucu döndürür ["0","1","2","3","4","5","6","7","8","9"]
. Ancak, tüm JSON dizisi 10 saniye bekledikten sonra bir kerede döndürülür. Veriler IAsyncEnumerable arabiriminden beklendiği gibi kullanılabilir hale geldiğinde döndürülmemeli midir? Yoksa bu web api tüketilmesi gereken belirli bir yolu var mı?
IAsyncEnumerable<int>
için IAsyncEnumerable<object>
- bu çalışması gerekir ama sonra katılan bir boks vardır)