JavaScript Academy · पाठ

queueMicrotask और क्रम

निष्पादन क्रम को सटीक रूप से नियंत्रित कीजिए।

पाठ 4, कुल 4 में से13 चरण

queueMicrotask और क्रम, CoddyKit पर JavaScript Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह JavaScript Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। JavaScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

queueMicrotask से परिचय

queueMicrotask प्रॉमिस बनाए बिना माइक्रोटास्क शेड्यूल करने का सीधा तरीका है। कॉलबैक वर्तमान सिंक्रोनस कोड के बाद, लेकिन किसी भी मैक्रोटास्क से पहले चलता है।

काम को ठीक अगले माइक्रोटास्क चेकपॉइंट तक स्थगित करने के लिए यह सबसे साफ़ उपकरण है।

मूल उपयोग

queueMicrotask को एक फ़ंक्शन दें। सिंक्रोनस कोड समाप्त होने के बाद यह फ़ंक्शन चलता है।

console.log('start');
queueMicrotask(() => console.log('microtask'));
console.log('end');

प्रॉमिस के समान प्राथमिकता

queueMicrotask कॉलबैक और प्रॉमिस का .then एक ही माइक्रोटास्क कतार साझा करते हैं। वे उसी क्रम में चलते हैं, जिस क्रम में शेड्यूल किए गए थे।

queueMicrotask(() => console.log('qmt 1'));
Promise.resolve().then(() => console.log('promise'));
queueMicrotask(() => console.log('qmt 2'));
console.log('sync');

setTimeout से पहले चलता है

सभी माइक्रोटास्क की तरह, queueMicrotask कॉलबैक किसी भी setTimeout मैक्रोटास्क से पहले चलता है, यहाँ तक कि उस मैक्रोटास्क से भी जो पहले शेड्यूल किया गया हो।

setTimeout(() => console.log('timeout (macro)'), 0);
queueMicrotask(() => console.log('microtask (micro)'));
console.log('sync');

कतार खाली होने के दौरान क्रम

माइक्रोटास्क FIFO क्रम में चलते हैं। कतार में सबसे पहले रखा गया माइक्रोटास्क कतार खाली होने पर सबसे पहले चलता है।

queueMicrotask(() => console.log('1'));
queueMicrotask(() => console.log('2'));
queueMicrotask(() => console.log('3'));
console.log('sync done');

माइक्रोटास्क को नेस्ट करना

कोई माइक्रोटास्क दूसरा माइक्रोटास्क कतार में रख सकता है। नया माइक्रोटास्क उसी चरण में, पहले से कतार में मौजूद माइक्रोटास्क के बाद और किसी भी मैक्रोटास्क से पहले चलता है।

queueMicrotask(() => {
  console.log('A');
  queueMicrotask(() => console.log('C (nested)'));
});
queueMicrotask(() => console.log('B'));
setTimeout(() => console.log('D (macro)'), 0);
console.log('sync');

पूरे क्रम का प्रदर्शन

सिंक्रोनस कोड, माइक्रोटास्क और मैक्रोटास्क को मिलाइए। नियम का क्रम देखिए: पहले सिंक्रोनस कोड, फिर क्रम के अनुसार माइक्रोटास्क, और फिर टाइमर।

console.log('1 sync');
setTimeout(() => console.log('5 macro'), 0);
queueMicrotask(() => console.log('3 micro'));
Promise.resolve().then(() => console.log('4 micro'));
console.log('2 sync');

async/await के साथ क्रमिक मिश्रण

await के बाद चलने वाला भाग भी एक माइक्रोटास्क है, इसलिए शेड्यूल किए जाने के क्रम में यह queueMicrotask के साथ बारी-बारी से चलता है।

async function task() {
  console.log('a');
  await null;
  console.log('d (after await)');
}
queueMicrotask(() => console.log('c (queueMicrotask)'));
task();
console.log('b');

queueMicrotask का उपयोग क्यों करें

जब आपको वर्तमान कॉल स्टैक के बाद, लेकिन ब्राउज़र के पेंट करने या किसी टाइमर के चलने से पहले किसी छोटे काम को स्थगित करना हो, तब इसका उपयोग करें। इससे केवल फेंकने के लिए बनाए गए प्रॉमिस की अतिरिक्त लागत और उसके resolution संबंधी व्यवहार से बचा जा सकता है।

let ready = false;
queueMicrotask(() => {
  ready = true;
  console.log('ready is now', ready);
});
console.log('ready is', ready);

अनंत माइक्रोटास्क लूप से बचें

क्योंकि मैक्रोटास्क से पहले माइक्रोटास्क पूरी तरह खाली होते हैं, इसलिए अपने आपको हमेशा फिर से कतार में रखने वाला कॉलबैक टाइमर और रेंडरिंग को हमेशा के लिए रोक देगा। हमेशा रुकने की कोई शर्त रखें।

let n = 0;
function step() {
  if (n++ < 3) {
    console.log('step ' + n);
    queueMicrotask(step);
  }
}
setTimeout(() => console.log('macro runs after all micros'), 0);
step();

पूरा मानसिक मॉडल

इवेंट लूप के हर चक्र में: एक मैक्रोटास्क (या प्रारंभिक स्क्रिप्ट) चलाएँ, फिर हर माइक्रोटास्क को पूरी तरह निष्पादित करें, फिर रेंडर करें और यही क्रम दोहराएँ। queueMicrotask आपको इस चरण में सटीक रूप से जुड़ने देता है।

console.log('script start');
setTimeout(() => console.log('setTimeout'), 0);
queueMicrotask(() => console.log('queueMicrotask'));
Promise.resolve().then(() => console.log('promise then'));
console.log('script end');

त्वरित जाँच

setTimeout(fn, 0) की तुलना में queueMicrotask कॉलबैक कहाँ चलता है?

पुनरावृत्ति: queueMicrotask और क्रम-निर्धारण

आपने सूक्ष्म स्तर का शेड्यूलिंग सीखा:

  • queueMicrotask प्रॉमिस के बिना एक माइक्रोटास्क शेड्यूल करता है।
  • यह प्रॉमिस कॉलबैक के साथ FIFO क्रम में माइक्रोटास्क कतार साझा करता है।
  • रेंडरिंग से पहले और किसी भी मैक्रोटास्क से पहले सभी माइक्रोटास्क पूरी तरह निष्पादित होते हैं।
  • लूप का मॉडल: मैक्रोटास्क, माइक्रोटास्क को पूरी तरह निष्पादित करना, रेंडर करना, और दोहराना।
शुरुआत निःशुल्क

एआई शिक्षक के साथ JavaScript सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
59
पाठ
200

अक्सर पूछे जाने वाले प्रश्न

क्या “queueMicrotask और क्रम” पाठ निःशुल्क है?

हाँ — JavaScript Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “queueMicrotask और क्रम” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। JavaScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“queueMicrotask और क्रम” में मैं क्या सीखूँगा?

निष्पादन क्रम को सटीक रूप से नियंत्रित कीजिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ JavaScript Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या JavaScript Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर JavaScript Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“queueMicrotask और क्रम” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस JavaScript Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर JavaScript Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. कॉल स्टैक
  2. मैक्रोटास्क और टास्क क्यू
  3. माइक्रोटास्क और Promise
  4. queueMicrotask और क्रम
← JavaScript Academy पर वापस जाएँ