জাভাস্ক্রিপ্টে অ্যাসিঙ্ক/অ্যাওয়েট

জাভাস্ক্রিপ্টে অ্যাসিঙ্ক/অ্যাওয়েট

এই আর্টিকেলে আমরা জাভাস্ক্রিপ্টে অ্যাসিঙ্ক/অ্যাওয়েট ব্যাখ্যা করব।

YouTube Video

জাভাস্ক্রিপ্টে অ্যাসিঙ্ক/অ্যাওয়েট

জাভাস্ক্রিপ্টে async (এবং await) এমন ফিচার যা অ্যাসিঙ্ক্রোনাস অপারেশন আরও সহজবোধ্য এবং পড়তে সুবিধাজনক করার জন্য ডিজাইন করা হয়েছে। এটি ব্যবহারের মাধ্যমে আপনি প্রচলিত কলব্যাক ফাংকশন এবং Promise চেইনের জটিলতা কমাতে পারেন এবং অ্যাসিনক্রোনাস কোডকে সিঙ্ক্রোনাস কোডের মতো করে লিখতে পারেন।

async ফাংশন

async একটি ফাংশনকে অ্যাসিঙ্ক্রোনাস ফাংশন হিসেবে চিহ্নিত করতে ব্যবহৃত হয়। async ফাংশন সবসময় একটি প্রমিজ রিটার্ন করে। async চিহ্নিত ফাংশনের ভিতরে, আপনি await ব্যবহার করতে পারেন একটি প্রমিজের ফলাফল প্রত্যাবর্তন করার জন্য অপেক্ষা করতে।

async ফাংশনের মৌলিক সিনট্যাক্স

1async function myAsyncFunction() {
2    // Write asynchronous processing here
3    return 'Result';  // Return a Promise
4}

এই ক্ষেত্রে, myAsyncFunction() কল করা হলে স্বয়ংক্রিয়ভাবে একটি প্রমিজ অবজেক্ট রিটার্ন করে। যখন প্রমিজ রেজলভ হয়, এর ফলাফলটি return দ্বারা রিটার্ন করা ভ্যালু হয়ে যায়।

উদাহরণ: মৌলিক async ফাংশন

1async function greet() {
2    return 'Hello, World!';
3}
4
5greet().then((message) => {
6    console.log(message);  // Displays "Hello, World!"
7});

await

await একটি প্রমিজ রেজলভ হওয়ার জন্য অপেক্ষা করার জন্য ব্যবহৃত হয়। await ব্যবহার করে আপনি প্রমিজের রেজলভ হওয়া পর্যন্ত এক্সিকিউশনকে থামিয়ে রাখতে পারেন এবং প্রমিজের ফলাফল পেতে পারেন। await শুধুমাত্র একটি async ফাংশনের ভিতরে ব্যবহার করা যেতে পারে।

উদাহরণ: কিভাবে await ব্যবহার করবেন

 1async function fetchData() {
 2    // Wait for the result of the Promise
 3    const data = await fetch('https://codesparklab.com/json/example.json');
 4    // Wait for the asynchronous operation to complete
 5    const jsonData = await data.json();
 6    // Retrieve and display the data
 7    console.log(jsonData);
 8}
 9
10fetchData();

উপরের উদাহরণে, এটি fetch ফাংশন দ্বারা রিটার্নকৃত প্রমিজের জন্য await দিয়ে অপেক্ষা করে এবং তারপর ফলাফল ব্যবহার করে আরও অ্যাসিঙ্ক্রোনাস অপারেশন সম্পন্ন করে।

async/await এর সাথে এরর হ্যান্ডলিং

যদি একটি async ফাংশনের ভিতরে কোনো এরর ঘটে, তবে সেই এররটি প্রমিজের একটি reject হিসেবে গণ্য করা হয়। আপনি এরর হ্যান্ডলিং করার জন্য try...catch স্টেটমেন্ট ব্যবহার করতে পারেন।

উদাহরণ: এরর হ্যান্ডলিং

 1async function fetchData() {
 2    try {
 3        // Invalid URL
 4        const data = await fetch('https://api.invalid-url.com/data');
 5        const jsonData = await data.json();
 6        console.log(jsonData);
 7    } catch (error) {
 8        // Catch the error
 9        console.error('Failed to fetch data:', error);
10    }
11}
12
13fetchData();

try...catch ব্লক ব্যবহার করে আপনি অ্যাসিঙ্ক্রোনাস অপারেশন চলাকালে ঘটে যাওয়া এরর ক্যাচ করতে পারেন এবং এরর ঘটলে প্রোগ্রাম ক্র্যাশ হওয়া প্রতিরোধ করতে পারেন।

async/await এর সুবিধা

প্রচলিত Promise চেইনের তুলনায়, async/await নিম্নলিখিত সুবিধাগুলি প্রদান করে:।

  • উন্নত পাঠযোগ্যতা
    • অ্যাসিনক্রোনাস প্রসেসিং সিঙ্ক্রোনাস কোডের মতো করে লেখা যায়, ফলে গভীরভাবে নেস্ট করা Promise চেইন এবং কলব্যাকের জটিলতা এড়ানো যায়।
  • সহজ ডিবাগিং
    • এটি যেহেতু সিঙ্ক্রোনাস কোডের মতো দেখায়, তাই ডিবাগিং এবং এরর হ্যান্ডলিং আরও সহজ হয়ে যায়।
  • উন্নত রক্ষণাবেক্ষণযোগ্যতা
    • অ্যাসিনক্রোনাস প্রক্রিয়াগুলি আরও সহজভাবে লেখা যায়, ফলে কোড পরিবর্তন বা সংশোধন করা সহজ হয় এবং দীর্ঘমেয়াদে রক্ষণাবেক্ষণযোগ্যতাও বৃদ্ধি পায়।

উদাহরণ: Promise চেইন বনাম async/await

চলেন আমরা Promise চেইন ব্যবহৃত কোড এবং async/await ব্যবহৃত কোডের তুলনা করি।

 1// Code using Promise chains
 2function fetchDataPromise() {
 3    fetch('https://codesparklab.com/json/example.json')
 4        .then((response) => response.json())
 5        .then((data) => {
 6            console.log(data);
 7        })
 8    .catch((error) => {
 9        console.error('Failed to fetch data:', error);
10    });
11}
12
13// Code using async/await
14async function fetchDataAsync() {
15    try {
16        const response = await fetch('https://codesparklab.com/json/example.json');
17        const data = await response.json();
18        console.log(data);
19    } catch (error) {
20        console.error('Failed to fetch data:', error);
21    }
22}

async/await ব্যবহার করলে আপনি অ্যাসিনক্রোনাস প্রক্রিয়া সরলরেখায় লিখতে পারেন, যার ফলে কোড আরও পাঠযোগ্য হয়।

একাধিক অ্যাসিঙ্ক্রোনাস অপারেশন একই সাথে সম্পাদন করুন

Promise.all() অথবা Promise.race() কে await এর সাথে যুক্ত করে, আপনি একাধিক অ্যাসিঙ্ক্রোনাস অপারেশন একই সাথে সম্পাদন করতে পারেন এবং তাদের ফলাফল দলবদ্ধভাবে পরিচালনা করতে পারেন।

উদাহরণ: একাধিক অ্যাসিঙ্ক্রোনাস অপারেশন সমসাময়িকভাবে সম্পাদন করা

 1async function fetchMultipleData() {
 2    try {
 3        const [data1, data2] = await Promise.all([
 4            fetch('https://codesparklab.com/json/example1.json'),
 5            fetch('https://codesparklab.com/json/example2.json')
 6        ]);
 7        const jsonData1 = await data1.json();
 8        const jsonData2 = await data2.json();
 9        console.log(jsonData1, jsonData2);
10    } catch (error) {
11        console.error('Failed to fetch data:', error);
12    }
13}
14
15fetchMultipleData();

Promise.all() একই সাথে একাধিক Promise সমাধান করে এবং তাদের ফলাফল অ্যারের আকারে প্রদান করে। এটি সকল Promise সমাধান হওয়ার জন্য অপেক্ষা করে, এবং যদি কোনো একটি ব্যর্থ হয়, তবে এটি সামগ্রিকভাবে ব্যর্থতা হিসেবে বিবেচিত হয়।

সারসংক্ষেপ

  • async ফাংশন: সর্বদা একটি Promise প্রদান করে এবং অ্যাসিঙ্ক্রোনাস প্রসেসিং লেখার জন্য ব্যবহৃত হয়।
  • await: একটি Promise সমাধান হওয়ার জন্য অপেক্ষা করতে এবং তার ফলাফল গ্রহণ করতে ব্যবহৃত হয়।
  • ত্রুটি পরিচালনা: অ্যাসিঙ্ক্রোনাস প্রসেসিং চলাকালীন ঘটে যাওয়া ত্রুটি পরিচালনা করতে try...catch ব্যবহার করুন।
  • আপনার একাধিক অ্যাসিঙ্ক্রোনাস অপারেশন: আপনি Promise.all() ব্যবহার করে একাধিক অ্যাসিঙ্ক্রোনাস অপারেশন একই সাথে সম্পাদন করতে পারেন।

async/await অ্যাসিঙ্ক্রোনাস প্রসেসিং পরিচালনার জন্য শক্তিশালী টুল, তাই জটিল অ্যাসিঙ্ক্রোনাস লজিক সরল করতে এগুলো ব্যবহার করতে নিশ্চিত হতে হবে।

আপনি আমাদের ইউটিউব চ্যানেলে ভিজ্যুয়াল স্টুডিও কোড ব্যবহার করে উপরের নিবন্ধটি অনুসরণ করতে পারেন। দয়া করে ইউটিউব চ্যানেলটিও দেখুন।

YouTube Video