Computer >> कंप्यूटर >  >> सॉफ्टवेयर >> ब्राउज़र्स

जावास्क्रिप्ट कतार का एक परिचयMicrotask

परिचय

क्यू माइक्रोटास्क एक नया ब्राउज़र एपीआई है जिसका उपयोग आपके सिंक्रोनस कोड को एसिंक्स में बदलने के लिए किया जा सकता है:

queueMicrotask(() => {
    console.log('hey i am executed asychronously by queueMicrotask');
});

यह वैसा ही है जैसा हम सेटटाइमआउट का उपयोग करके कर रहे थे:

setTimeout(() => {
    console.log('hey i am executed asychronously by setTimeout');
}, 0);

तो queueMicrotask . का क्या उपयोग है जब हमारे पास पहले से ही सेटटाइमआउट . है ?

कतारमाइक्रोटास्क फ़ंक्शन (कार्य) को एक कतार में जोड़ता है और वर्तमान कार्य के पूरा होने के बाद प्रत्येक फ़ंक्शन को एक-एक करके (FIFO) निष्पादित किया जाता है और जब निष्पादन संदर्भ के नियंत्रण से पहले कोई अन्य कोड चलाने की प्रतीक्षा नहीं करता है, तो ब्राउज़र को वापस कर दिया जाता है। इवेंट लूप.

मूल रूप से queueMicrotask . के कार्य इवेंट लूप में निष्पादन पास करने से पहले वर्तमान कॉलस्टैक खाली होने के बाद ही निष्पादित किया जाता है।

सेटटाइमआउट के मामले में , ईवेंट लूप को नियंत्रण दिए जाने के बाद, प्रत्येक कार्य को ईवेंट कतार से निष्पादित किया जाता है।

इसलिए यदि हम सेटटाइमआउट execute निष्पादित करते हैं पहले और फिर 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

  1. अपाचे कैसेंड्रा का परिचय

    यह ब्लॉग गैर-संबंधपरक डेटाबेस, Apache Cassandra™ का एक सिंहावलोकन देता है। यह अपने घटकों पर चर्चा करता है और यह समझ प्रदान करता है कि डेटाबेस डेटा को कैसे संचालित और प्रबंधित करता है। परिचय एक संगठन जिसे मुख्य रूप से डेटाबेस सिस्टम के प्रदर्शन से समझौता किए बिना अपने दिन-प्रतिदिन के परिचालन डेटा को

  1. CPADMIN का परिचय

    Oracle® ने CPADMIN लॉन्च किया है, जो E-Business Suite® (EBS) संस्करणों R12.1.3 और R12.2.x के लिए एक समवर्ती प्रोसेसिंग कमांड-लाइन उपयोगिता है। CPADMIN एमेन्यू-आधारित उपयोगिता है जो समवर्ती प्रक्रियाओं के लिए कई मौजूदा उपयोगिताओं को लपेटती है और आपको एक ही मेनू के तहत कई समवर्ती प्रक्रिया-संबंधित कार

  1. रेडिस सेंटिनल का परिचय

    रेडिस सेंटिनल रेडिस के लिए एक सरल और स्वचालित उच्च उपलब्धता (एचए) समाधान प्रदान करता है। यदि आप जानते हैं कि MongoDB चुनाव कैसे काम करता है, तो यह बहुत दूर नहीं है। शुरू करने के लिए, आपके पास एक दिया गया मास्टर है जो एन संख्या के दासों की नकल करता है। वहां से, आपके पास प्रहरी डेमॉन चल रहे हैं, चाहे