परिचय
queueMicrotask एक नया ब्राउज़र API है जिसका उपयोग आपके सिंक्रोनस कोड को एसिंक्रोनस में बदलने के लिए किया जा सकता है:
queueMicrotask(() => { console.log('hey i am executed asychronously by queueMicrotask'); });यह उससे मिलता-जुलता है जो हम setTimeout का उपयोग करके कर रहे थे:
setTimeout(() => { console.log('hey i am executed asychronously by setTimeout'); }, 0);तो जब हमारे पास पहले से setTimeout है तो queueMicrotask का क्या उपयोग है?
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" के साथ वही काम करता है।
इसका उपयोग कब करें
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