পরিচয়
কিউ মাইক্রোটাস্ক একটি নতুন ব্রাউজার API যা আপনার সিঙ্ক্রোনাস কোডকে অ্যাসিঙ্কে রূপান্তর করতে ব্যবহার করা যেতে পারে:
queueMicrotask(() => {
console.log('hey i am executed asychronously by queueMicrotask');
});
এটি সেটটাইমআউট:
ব্যবহার করে আমরা যা করছিলাম তার অনুরূপsetTimeout(() => {
console.log('hey i am executed asychronously by setTimeout');
}, 0);
তাহলে queueMicrotask এর ব্যবহার কি যখন আমাদের ইতিমধ্যেই সেটটাইমআউট আছে ?
queueMicrotask একটি সারিতে ফাংশন (টাস্ক) যোগ করে এবং বর্তমান টাস্কটি তার কাজ শেষ করার পরে প্রতিটি ফাংশন একে একে এক্সিকিউট করা হয় (FIFO) এবং যখন এক্সিকিউশন কনটেক্সট নিয়ন্ত্রণ ব্রাউজারের কাছে ফিরে আসার আগে অন্য কোন কোড চালানোর অপেক্ষায় থাকে না। ইভেন্ট লুপ।
মূলত queueMicrotask এর কাজ ইভেন্ট লুপে এক্সিকিউশন পাস করার আগে বর্তমান কলস্ট্যাক খালি হওয়ার পরেই কার্যকর করা হয়।
setTimeout এর ক্ষেত্রে , প্রতিটি টাস্ক ইভেন্টের সারি থেকে সম্পাদিত হয়, ইভেন্ট লুপে নিয়ন্ত্রণ দেওয়ার পরে।
তাই যদি আমরা setTimeout চালাই প্রথমে এবং তারপর কিউমাইক্রোটাস্ক , যা প্রথমে বলা হবে? নীচের কোডটি চালান এবং নিজেকে পরীক্ষা করে দেখুন:
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" এর সাথে একই কাজ করে।
কখন এটি ব্যবহার করতে হবে
কখন 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