আমার তৈরি একটি ওয়েব এপিআইতে আমার নিম্নলিখিত অপারেশন রয়েছে:
// GET api/<controller>
[HttpGet]
[Route("pharmacies/{pharmacyId}/page/{page}/{filter?}")]
public CartTotalsDTO GetProductsWithHistory(Guid pharmacyId, int page, string filter = null ,[FromUri] bool refresh = false)
{
return delegateHelper.GetProductsWithHistory(CustomerContext.Current.GetContactById(pharmacyId), refresh);
}
এই ওয়েবসার্ভিসে কলটি একটি জ্যাকুরি অ্যাজাক্স কলের মাধ্যমে করা হয়েছে:
$.ajax({
url: "/api/products/pharmacies/<%# Farmacia.PrimaryKeyId.Value.ToString() %>/page/" + vm.currentPage() + "/" + filter,
type: "GET",
dataType: "json",
success: function (result) {
vm.items([]);
var data = result.Products;
vm.totalUnits(result.TotalUnits);
}
});
আমি এমন কিছু বিকাশকারীকে দেখেছি যারা পূর্ববর্তী ক্রিয়াকলাপটি এভাবে প্রয়োগ করে:
// GET api/<controller>
[HttpGet]
[Route("pharmacies/{pharmacyId}/page/{page}/{filter?}")]
public async Task<CartTotalsDTO> GetProductsWithHistory(Guid pharmacyId, int page, string filter = null ,[FromUri] bool refresh = false)
{
return await Task.Factory.StartNew(() => delegateHelper.GetProductsWithHistory(CustomerContext.Current.GetContactById(pharmacyId), refresh));
}
যদিও বলতে হবে যে গেটপ্রডাক্টস উইথ হিস্টোরি () বেশ দীর্ঘ অপারেশন। আমার সমস্যা এবং প্রসঙ্গটি দেওয়া, কীভাবে ওয়েবএপিআইআই অপারেশনটি অ্যাসিঙ্ক্রোনাস আমাকে উপকৃত করবে?
GetProductsWithHistoryAsync()
ফিরে আসা দরকার Task<CartTotalsDTO>
। আপনার কন্ট্রোলার অ্যাসিঙ্কটি লেখার কোনও সুবিধা থাকতে পারে যদি আপনি কলগুলিও অ্যাসিঙ্ক হিসাবে স্থানান্তরিত করতে চান তবে; তারপরে আপনি বাকী স্থানান্তরিত হওয়ার সাথে সাথে আপনি async অংশগুলি থেকে সুবিধা পেতে শুরু করুন।
async Task<T>
। মনে রাখবেন, টিপিএল এমনকি অস্তিত্বের আগেই