Beim Erkunden von IAsyncEnumerable in einem ASP.NET-Web-API-Projekt ist ein interessantes Verhalten aufgetreten. Betrachten Sie die folgenden Codebeispiele:
// 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();
}
}
Beispiel 1 (int-Array) wird {}
als JSON-Ergebnis zurückgegeben.
Probe 2 gibt das erwartete Ergebnis zurück ["0","1","2","3","4","5","6","7","8","9"]
. Nach 10 Sekunden Wartezeit wird jedoch sofort das gesamte JSON-Array zurückgegeben. Sollte es nicht zurückgegeben werden, wenn Daten wie erwartet von der IAsyncEnumerable-Schnittstelle verfügbar werden? Oder gibt es eine bestimmte Art und Weise, wie diese Web-API verwendet werden sollte?
IAsyncEnumerable<int>
um IAsyncEnumerable<object>
- es funktionieren soll , aber dann gibt es eine Box beteiligt)