Saya menemukan perilaku yang menarik saat menjelajahi IAsyncEnumerable dalam proyek ASP.NET Web API. Pertimbangkan contoh kode berikut:
// 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();
}
}
Sampel 1 (array int) kembali {}
sebagai hasil JSON.
Sampel 2 mengembalikan hasil yang diharapkan ["0","1","2","3","4","5","6","7","8","9"]
. Namun, seluruh array JSON dikembalikan sekaligus setelah 10 detik menunggu. Tidakkah seharusnya dikembalikan saat data tersedia seperti yang diharapkan dari antarmuka IAsyncEnumerable? Atau adakah cara khusus api web ini harus dikonsumsi?
IAsyncEnumerable<int>
ke IAsyncEnumerable<object>
- harus bekerja tapi kemudian ada tinju yang terlibat)