আমি পড়েছি যে async
কীওয়ার্ড দ্বারা চিহ্নিত অ্যাসিঙ্ক ফাংশনগুলি স্পষ্টভাবে একটি প্রতিশ্রুতি ফিরিয়ে দেয়:
async function getVal(){
return await doSomethingAync();
}
var ret = getVal();
console.log(ret);
কিন্তু যে সুসঙ্গত ... অভিমানী নয় doSomethingAsync()
আয় একটি প্রতিশ্রুতি, এবং অপেক্ষা শব্দ প্রতিশ্রুতি থেকে মান ফিরে আসবো, না প্রতিজ্ঞা itsef, তারপর আমার getVal ফাংশন উচিত যে মান, কোনো অন্তর্নিহিত প্রতিশ্রুতি ফিরে যান।
তাহলে কেস ঠিক কী? অ্যাসিঙ্ক কীওয়ার্ড দ্বারা চিহ্নিত ফাংশনগুলি কি স্পষ্টভাবে প্রতিশ্রুতি দেয় বা আমরা কী ফিরে আসে তা নিয়ন্ত্রণ করি?
সম্ভবত আমরা যদি স্পষ্টভাবে কিছু ফেরত না পাই, তবে তারা স্পষ্টতই একটি প্রতিশ্রুতি ফিরিয়ে দেয় ...?
আরও স্পষ্ট করে বলতে গেলে, উপরোক্ত এবং এর মধ্যে পার্থক্য রয়েছে
function doSomethingAync(charlie) {
return new Promise(function (resolve) {
setTimeout(function () {
resolve(charlie || 'yikes');
}, 100);
})
}
async function getVal(){
var val = await doSomethingAync(); // val is not a promise
console.log(val); // logs 'yikes' or whatever
return val; // but this returns a promise
}
var ret = getVal();
console.log(ret); //logs a promise
আমার সংক্ষিপ্তসারগুলিতে আচরণটি আসলে traditionalতিহ্যগত রিটার্নের বিবৃতিগুলির সাথে সঙ্গতিপূর্ণ নয়। এটি প্রদর্শিত হয় যখন আপনি কোনও async
ফাংশন থেকে সুস্পষ্টভাবে একটি প্রতিশ্রুতিবিহীন মানটি ফিরিয়ে দেন , এটি এটি একটি প্রতিশ্রুতিতে জড়িয়ে জোর করে দেবে। আমার এটি নিয়ে কোনও বড় সমস্যা নেই তবে এটি সাধারণ জেএসকে অস্বীকার করে।
console.log
দেখায়?