दिलचस्प पोस्ट
SQL सर्वर में RegEx का उपयोग करना आप टॉगल बटन कैसे बनाते हैं? वर्तमान संदर्भ में नाम 'नियंत्रण का नाम' मौजूद नहीं है सेलरी कार्य prefetching को समझना एंड्रॉइड किटकैट (एपीआई 1 9) – एसएमएस कंटेंट प्रोवाइडर में संदेशों को बिना किसी डिफॉल्ट ऐप के भेजे बिना कैसे लिखना है? क्या मैं अपने प्रिंट सीएसएस से यूआरएल को निकाल सकता हूँ, तो वेब पता प्रिंट नहीं होगा? एंड्रॉइड / जावा – फेसबुक वॉल को सरल पाठ पोस्ट करें? समूह के माध्य (या अन्य सारांश आंकड़े) की गणना करें और मूल डेटा को असाइन करें सेलेनियम वेबड्राइवर का उपयोग करके विंडोज़ फाइल अपलोड कैसे करें? सी में एक एन्यूएम का आकार क्या है? SSIS नियंत्रण प्रवाह कार्य में एक अस्थायी तालिका कैसे तैयार करें और फिर डेटा प्रवाह कार्य में इसका उपयोग करें? रास्पबेरी पी क्रॉस-कंपाइलर स्थापित करना ऐप्लीकेशन में एएसपी.नेट असेंबलियों को जीवित कैसे रखना है? कैसे ListView में एक पाद लेख जोड़ने के लिए? जावास्क्रिप्ट में निष्क्रिय समय का पता लगाना

इवेंट लूप संदर्भ में माइक्रोटस्क और मैक्रोटसास्क के बीच का अंतर

मैंने अभी वादा / ए + विवरण पढ़ना समाप्त कर दिया है और शब्दों को माइक्रोटस्क और मैक्रोटस्क पर ठोकर खाई: देखें http://promisesaplus.com/#notes

मैंने पहले इन शर्तों के बारे में कभी नहीं सुना है, और अब मैं उत्सुक हूँ कि अंतर क्या हो सकता है?

मैंने पहले से ही वेब पर कुछ जानकारी ढूँढ़ने की कोशिश की है, लेकिन मैंने पाया है कि यह पोस्ट w3.org अभिलेखागार से है (जो मेरे लिए अंतर की व्याख्या नहीं करता है): http://lists.w3.org/Archives /Public/public-nextweb/2013Jul/0018.html

इसके अतिरिक्त, मैंने "मैक्रोटसाक" नामक एक एनपीएम मॉड्यूल पाया है: https://www.npmjs.org/package/macrotask फिर से, यह स्पष्ट नहीं है कि वास्तव में अंतर क्या है

मुझे पता है, यह इवेंट लूप के साथ कुछ है, जैसा कि https://html.spec.whatwg.org/multipage/webappapis.html#task-queue और https: //html.spec.whatwg में वर्णित है .org / मल्टीपेज / webappapis.html # प्रदर्शन एक microtask-चौकी

मैं जानता हूं कि मुझे सैद्धांतिक रूप से मतभेदों को निकालने में सक्षम होना चाहिए, इस WHATWG विनिर्देश के अनुसार। लेकिन मुझे यकीन है कि एक विशेषज्ञ द्वारा दिए गए संक्षिप्त विवरण से दूसरों को लाभ हो सकता है।

वेब के समाधान से एकत्रित समाधान "इवेंट लूप संदर्भ में माइक्रोटस्क और मैक्रोटसास्क के बीच का अंतर"

इवेंट लूप के एक-एक आस-पास मैट्रॉटस्क कतार (इस कतार को केवल WHATWG विनिर्देश में कार्य कतार कहा जाता है) से संसाधित किया जा रहा है। इस मैक्रोटास्क के समाप्त होने के बाद, सभी उपलब्ध माइक्रोोटस्क प्रोसेस किए जाएंगे, अर्थात् एक ही आस-पास चक्र के भीतर। जबकि इन माइक्रोोटस्क पर संसाधित होते हैं, वे और अधिक माइक्रोटस्क कतार कर सकते हैं, जो सभी को एक-एक करके चलाएगा, जब तक कि माइक्रोटस्क कतार समाप्त नहीं हो जाता।

इस के व्यावहारिक परिणाम क्या हैं?

यदि एक माइक्रोटस्क फिर से अन्य माइक्रोटस्क कतारों को कतार करता है, तो अगले मैक्रॉटस्क पर संसाधित होने तक एक लंबा समय लग सकता है। इसका मतलब है, आप एक अवरुद्ध UI के साथ समाप्त कर सकते हैं, या आपके आवेदन में कुछ समाप्त I / O बेतरतीब हो सकते हैं।

हालांकि, कम से कम नोड। जेएस की प्रक्रिया। एनएक्सटीक फ़ंक्शन (जो कि क्यूई माइक्रोटस्क है ) से संबंधित है, इस प्रक्रिया के माध्यम से ऐसी अवरोधन के खिलाफ एक इनबिल्ट संरक्षण है। MxTickDepth यह मान 1000 की डिफ़ॉल्ट पर सेट किया गया है, इस सीमा तक पहुंचने के बाद माइक्रोट्रॉक्सेज़ की आगे की प्रक्रिया को कम करने के लिए सेट किया गया है जो अगले मैक्रोटोक को संसाधित करने की अनुमति देता है)

तो जब क्या उपयोग करने के लिए?

असल में, माइक्रोट्रॉक्सेज़ का उपयोग करें जब आपको सिंक्रोनस तरीके से असिंक्रोनस रूप से काम करने की आवश्यकता होती है (यानी जब आप कहेंगे कि यह (तत्काल भविष्य में ) यह (माइक्रो-कार्य ) करें)। अन्यथा, macrotasks के लिए छड़ी

उदाहरण

मैक्रोटस्क: सेट टाइमआउट, सेट इन्टरवॉल, सेट इम्यडिएट, अनुरोध एन्निमेशनफ़्रेम, आई / ओ, यूआई रेंडरिंग
माइक्रोटस्क: प्रोसेस। एनएक्सटेक, वादा, ऑब्जेक्ट। ब्लॉगर्स, इंटेमेशनऑब्सर्वर

मैंने इस पर एक पोस्ट लिखी, इंटरैक्टिव उदाहरणों सहित https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/

युक्ति में बुनियादी अवधारणाएं:

  • इवेंट लूप में एक या अधिक कार्य कतारें होती हैं। (कार्य कतार मेक्रोटास्क कतार है)
  • प्रत्येक इवेंट लूप में एक माइक्रोटस्क कतार है।
  • कार्य कतार = मैक्रोटसाक कतार! = माइक्रोटस्क कतार
  • एक कार्य को मक्रोटस्क कतार या माइक्रोटस्क कतार में धकेल दिया जा सकता है
  • जब कोई कार्य कतार (सूक्ष्म / मैक्रो) में धकेल दिया जाता है, हमारा मतलब है कि काम पूरा करना समाप्त हो गया है, इसलिए कार्य अब निष्पादित किया जा सकता है।

और इवेंट लूप प्रोसेस मॉडल निम्नानुसार है:

जब कॉल स्टैक खाली है, तो चरण-

  1. कार्य कतारों में सबसे पुराना कार्य (कार्य ए) का चयन करें
  2. अगर कार्य ए शून्य है (जिसका मतलब है कि कार्य कतार खाली है), चरण 6 पर जाएं
  3. सेट "वर्तमान में चल रहे कार्य" से "कार्य ए"
  4. "कार्य ए" को चलाने (कॉलबैक फ़ंक्शन को चलाने का मतलब है)
  5. सेट "वर्तमान में चल रहे कार्य" को रिक्त करने के लिए, "कार्य ए" को हटा दें
  6. माइक्रोटस्क कतार प्रदर्शन
    • (ए)। माइक्रोटस्क कतार में सबसे पुराना कार्य (कार्य एक्स) को चुनें
    • (बी)। यदि कार्य एक्स शून्य है (माइक्रोटस्क कतार खाली है इसका मतलब है), कदम पर कूद (जी)
    • (सी) .सेट "वर्तमान कार्य चल रहा है" से "कार्य एक्स"
    • (डी) .रुन "कार्य एक्स"
    • (ई)। "वर्तमान कार्य चल रहा है" को रद्द करने के लिए, "कार्य x" को निकाल दें
    • (एफ)। माइक्रोटस्क कतार में अगले सबसे पुराने कार्य को चुनें, कदम पर जाएं (बी)
    • (जी)। फाइनिश माइक्रोटस्क कतार;
  7. कदम 1 से कूदो

एक सरलीकृत प्रक्रिया मॉडल निम्नानुसार है:

  1. मैक्रॉटस्क कतार में सबसे पुराना कार्य चलाएं, फिर इसे हटा दें।
  2. माइक्रोटस्क कतार में सभी उपलब्ध कार्य चलाएं, फिर उन्हें निकालें।
  3. अगले दौर: मैक्रॉटस्क कतार में अगला कार्य चलाएं (कदम 2 कूदो)

कुछ याद करने योग्य:

  1. जब एक कार्य (मैक्रोटसाक कतार में) चल रहा है, तो नई घटनाएं पंजीकृत हो सकती हैं। नए कार्यों को बनाया जा सकता है। नीचे दो नए बनाए गए कार्य हैं:
    • वादाए। तब () का कॉलबैक एक कार्य है
      • वादा ए को हल / अस्वीकार कर दिया गया है: कार्य इवेंट लूप के वर्तमान दौर में माइक्रोटस्क कतार में धकेल दिया जाएगा।
      • वादा ए लंबित है: कार्य लूप के भविष्य के दौर में माइक्रोटस्क कतार में धकेल दिया जाएगा (अगले दौर में हो सकता है)
    • setTimeout (कॉलबैक, एन) का कॉलबैक एक कार्य है, और मैक्रॉटस्क क्यू में धकेल दिया जाएगा, यहां तक ​​कि एन 0 है;
  2. माइक्रोटस्क कतार में कार्य वर्तमान दौर में चलाया जाएगा, जबकि मैक्रॉटस्क कतार में कार्य को ईवेंट लूप के अगले दौर के लिए इंतजार करना होगा।
  3. हम सभी "क्लिक", "स्क्रॉल", "एजेक्स", "सेटटाइमआउट" का कॉलबैक जानते हैं … कार्य हैं, हालांकि हमें यह भी याद रखना चाहिए कि स्क्रिप्ट टैग में जेएस कोड पूरी तरह से कार्य (एक मैक्रोस्ट्रोक) भी है।