ملاحظاتی در حین استفاده از IAsyncEnumerable در برنامههای وب
نویسنده: وحید نصیری
تاریخ: ۱۴۰۳/۱۲/۱۵ ۰۸:۵۴
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
IAsyncEnumerable از یک نقطه پایانی رابط برنامه نویسی وب (Web API) میتواند منجر به پاسخهای غیرمنتظره و نامعتبر قالب نشانه گذاری اشیاء جاوا اسکریپت (JSON) هنگام بروز خطا در طول شمارش شود. پاسخ غیر معتبر است، زیرا:IAsyncEnumerable ارائه شود، طبیعی است که نوشتن آن در جریان (stream) آغاز شود و در حافظه صرفه جویی شود؛ اما هیچ تضمینی وجود ندارد که بازیابی اولین یا صدمین مورد در طول مسیر با خطا مواجه نشود.IAsyncEnumerable: app.MapGet("/weather-quiz", async () =>
{
async IAsyncEnumerable<WeatherForecast> StronglyTypeMe()
{
var summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
yield return new WeatherForecast
(
DateOnly.FromDateTime(DateTime.Now),
Random.Shared.Next(-20, 55),
summaries[Random.Shared.Next(summaries.Length)]
);
throw new InvalidOperationException("Failure is always an option"); // BOOM
}
return StronglyTypeMe();
});[
{
"date":"2025-03-04",
"temperatureC":-17,
"summary":"Cool",
"temperatureF":2
}
{
"type":"https://tools.ietf.org/html/rfc9110#section-15.6.1",
"title":"An error occurred while processing your request.",
"status":500
}