ভূমিকা
queueMicrotask হল একটি নতুন ব্রাউজার API যা আপনার সিনক্রোনাস কোডকে অ্যাসিনক্রোনাসে রূপান্তর করতে ব্যবহার করা যেতে পারে:
queueMicrotask(() => { console.log('hey i am executed asychronously by queueMicrotask'); });এটি সেটাইমআউট ব্যবহার করে আমরা যা করতাম তার সাথে মিলত:
setTimeout(() => { console.log('hey i am executed asychronously by setTimeout'); }, 0);তাহলে queueMicrotask-এর ব্যবহার কী যেহেতু আমাদের ইতিমধ্যে setTimeout আছে?
queueMicrotask ফাংশনটি (টাস্ক) একটি কিউ-তে যোগ করে এবং প্রতিটি ফাংশন একে אחרי একে (FIFO) এক্সিকিউট হয় বর্তমান টাস্ক তার কাজ শেষ করলে এবং যখন কোনো অন্য কোড রান করার জন্য অপেক্ষা করছে না التنفيذ কনটেক্সট ব্রাউজারের ইভেন্ট লুপে ফেরত দেওয়ার আগে।
বেসিক্যালি queueMicrotask-এর টাস্কগুলো বর্তমান কলস্ট্যাক খালি হওয়ার ঠিক পরেই এক্সিকিউট হয় ইভেন্ট লুপে কন্ট্রোল পাস করার আগে।
setTimeout-এর ক্ষেত্রে, প্রতিটি টাস্ক ইভেন্ট কিউ থেকে এক্সিকিউট হয়, কন্ট্রোল ইভেন্ট লুপে দেওয়ার পর।
তাহলে আমরা যদি setTimeout আগে এক্সিকিউট করি এবং তারপর queueMicrotask, কোনটি প্রথমে কল হবে? নিচের কোডটি এক্সিকিউট করুন এবং নিজেই চেক করুন:
setTimeout(() => { console.log('hey i am executed asychronously by setTimeout'); },0); queueMicrotask(() => { console.log('hey i am executed asychronously by queueMicrotask'); }); Node.js একই কাজ "process.nextTick"-এর সাথে করে।
It কখন ব্যবহার করবেন
queueMicrotask ব্যবহার করার জন্য কোনো কঠোর নিয়ম নেই, কিন্তু এটি চতুরাই ব্যবহার করে বর্তমান এক্সিকিউশন রোকে না একটি কোড पीস রান করতে পারেন।
উদাহরণস্বরূপ, ধরুন আমাদের একটি অ্যারে আছে যেখানে আমরা ভ্যালুগুলোর তালিকা মেইনটেইন করছি। প্রতিটি ভ্যালু ইনসার্টের পর, আমরা অ্যারেটি সর্ট করি যাতে ভ্যালু সার্চ করা দ্রুত হয়।
var arr=[]; function add(value){ arr.push(value); arr.sort(); }তবে, একটি এলিমেন্ট সার্চ করা হয় যখন কেউ একটি সার্চ ইনপুট বক্স ব্যবহার করে। এর মানে ইভেন্ট হ্যান্ডলার কল হবে কন্ট্রোল ইভেন্ট লুপে ট্রান্সফার হওয়ার পর, তাই ডেটা সর্ট করা অন্যান্য গুরুত্বপূর্ণ সিনক্রোনাস কোডের এক্সিকিউশন ব্লক করে।
এখানে queueMicrotask ব্যবহার করে আমরা কীভাবে আমাদের কোড উন্নত করতে পারি:
var arr = []; function add(value) { arr.push(value); queueMicrotask(() => { arr.sort(); }) }রেফারেন্স
- https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/queueMicrotask