Encontré un comportamiento interesante al explorar IAsyncEnumerable en un proyecto de API web ASP.NET. Considere los siguientes ejemplos de código:
// 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();
}
}
La muestra 1 (int array) vuelve {}
como resultado JSON.
La muestra 2 devuelve el resultado esperado ["0","1","2","3","4","5","6","7","8","9"]
. Sin embargo, toda la matriz JSON se devuelve a la vez después de 10 segundos de espera. ¿No debería devolverse a medida que los datos estén disponibles como se esperaba de la interfaz IAsyncEnumerable? ¿O hay alguna forma específica de consumir esta API web?
IAsyncEnumerable<int>
a IAsyncEnumerable<object>
- debería funcionar pero hay un recuadro involucrado)