নিয়ামক পদক্ষেপের জন্য সঠিক স্বাক্ষর কী কী যা একটি IAsyncEnumerable<T>
এবং একবার প্রদান করে NotFoundResult
তবে একটি অ্যাসিঙ্ক ফ্যাশনে এখনও প্রক্রিয়া করা হয়?
আমি এই স্বাক্ষরটি ব্যবহার করেছি এবং এটি সংকলন করে না কারণ IAsyncEnumerable<T>
প্রতীক্ষিত নয়:
[HttpGet]
public async Task<IActionResult> GetAll(Guid id)
{
try
{
return Ok(await repository.GetAll(id)); // GetAll() returns an IAsyncEnumerable
}
catch (NotFoundException e)
{
return NotFound(e.Message);
}
}
এটি একটি জরিমানা সংকলন করে তবে এর স্বাক্ষর অ্যাসিঙ্ক নয়। সুতরাং এটি থ্রেড পুলের থ্রেডগুলি ব্লক করবে কিনা তা নিয়ে আমি উদ্বিগ্ন:
[HttpGet]
public IActionResult GetAll(Guid id)
{
try
{
return Ok(repository.GetAll(id)); // GetAll() returns an IAsyncEnumerable
}
catch (NotFoundException e)
{
return NotFound(e.Message);
}
}
আমি এটির await foreach
মতো একটি লুপ ব্যবহার করার চেষ্টা করেছি তবে এটি অবশ্যই সংকলন করবে না:
[HttpGet]
public async IAsyncEnumerable<MyObject> GetAll(Guid id)
{
IAsyncEnumerable<MyObject> objects;
try
{
objects = contentDeliveryManagementService.GetAll(id); // GetAll() returns an IAsyncEnumerable
}
catch (DeviceNotFoundException e)
{
return NotFound(e.Message);
}
await foreach (var obj in objects)
{
yield return obj;
}
}
IAsyncEnumerable
প্রতীক্ষিত। ব্যবহার await foreach(var item from ThatMethodAsync()){...}
।
IAsyncEnumerable<MyObject>
, শুধু ফলাফলের যেমন ফিরে return objects
। এটি কোনও এইচটিটিপি অ্যাকশনটিকে স্ট্রিমিং জিআরপিসি বা সিগন্যালআর পদ্ধতিতে রূপান্তর করবে না যদিও। মিডলওয়্যারটি এখনও ডেটা গ্রাস করবে এবং ক্লায়েন্টকে একক এইচটিটিপি প্রতিক্রিয়া পাঠাবে
IAsyncEnumerable
এএসপি.এনইটি কোর নদীর গভীরতানির্ণয়টি গণনার যত্ন নেয় এবং 3.0 হিসাবে এটি সচেতন।
MyObject
একই সঙ্গে একাধিক আইটেম ফিরে আসছেনid
? সাধারণত আপনি এমন কোনও কিছুরNotFound
জন্য প্রেরণ করেননি যা কোনও ফেরত দেয়IEnumerable
- এটি খালি হবে - অথবা আপনি অনুরোধকৃতid
/ দিয়ে একক আইটেমটি ফিরিয়ে দেবেনNotFound
।