মূল কন্টেন্টে যান
মডিউল 7 · 2-এর পাঠ 4কোর্সে 26/32~12 min
মডিউল পাঠ (2/4)

async / অপেক্ষা করুন

async/await হল প্রতিশ্রুতিগুলির সাথে কাজ করার জন্য একটি পরিষ্কার বাক্য গঠন: কোডটি এর মতো পড়ে সিঙ্ক্রোনাস কোড, কিন্তু পর্দার আড়ালে এটি আগের পাঠের মতো ঠিক একই প্রতিশ্রুতি ব্যবহার করে।

async function

async এর সাথে ঘোষিত একটি ফাংশন সর্বদা একটি প্রতিশ্রুতি প্রদান করে।

JS
async function forty() {
  return 40;
}

forty(); // Promise { 40 }
forty().then((v) => console.log(v)); // 40

এমনকি আপনি একটি "স্বাভাবিক" মান ফেরত দিলেও, ফাংশনটি এটিকে একটি সমাধান করা প্রতিশ্রুতিতে মোড়ানো হয়।

await

একটি async function এর ভিতরে আপনি একটি প্রতিশ্রুতির আগে await লাগাতে পারেন: সম্পাদন বিরাম দেওয়া হয়েছে প্রতিশ্রুতি স্থির না হওয়া পর্যন্ত, তারপর সমাধানকৃত মান দিয়ে চলতে থাকে।

JS
async function sum() {
  const a = await Promise.resolve(10);
  const b = await Promise.resolve(20);
  return a + b; // 30
}

.then শৈলীতে সমতুল্য (আরো শব্দার্থ):

JS
function sum() {
  return Promise.resolve(10).then((a) => Promise.resolve(20).then((b) => a + b));
}

await ত্রুটি প্রচার করে

প্রতিশ্রুতি প্রত্যাখ্যান হলে, await ত্রুটিটি পুনঃথ্রো করে। আপনি এটি একটি স্বাভাবিক সঙ্গে ধরতে পারেন try/catch:

JS
async function read() {
  try {
    const x = await Promise.reject(new Error('no'));
    return x;
  } catch (err) {
    return 'error: ' + err.message;
  }
}

read(); // Promise { 'error: no' }

অ্যারো অ্যাসিঙ্ক

JS
const double = async (n) => n * 2;
double(5); // Promise { 10 }

চেষ্টা করে দেখুন

ব্যায়াম#js.m7.l2.e1
প্রচেষ্টা: 0লোড হচ্ছে...

একটি `অ্যাসিঙ্ক ফাংশন addOne(p)` সংজ্ঞায়িত করুন যেটি একটি সংখ্যার প্রতিশ্রুতি পায় এবং নম্বরটি (প্রতিশ্রুতি হিসাবে) প্রদান করে + 1। অপেক্ষা করুন ব্যবহার করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

const n = await p; রিটার্ন n + 1;

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

ব্যায়াম পর্যালোচনা করুন

ব্যায়াম#js.m7.l2.e2
প্রচেষ্টা: 0লোড হচ্ছে...

`sumTwo(pa, pb)` async সংজ্ঞায়িত করুন: সংখ্যার দুটি প্রতিশ্রুতি পায়, তাদের যোগফল প্রদান করে। দুটি অনুক্রমিক অপেক্ষা ব্যবহার করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

প্রত্যেকের জন্য অপেক্ষা করুন, তারপর a + b ফেরত দিন।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ