इसका कारण यह है क्या हो रहा है, जब भी आप setTimeout
के अंदर एक function
गुजरती हैं और यह कहते हैं, पारित कर दिया समारोह callBack
कतार मिलीसेकेंड में आपूर्ति की देरी के आधार पर में धकेल दिया हो जाएगा। कॉलबैक कतार के अंदर के कार्यों को उनके द्वारा धक्का दिए गए क्रम में एक-एक करके निष्पादित किया जाएगा। तो यहां आपके मामले में, आप function
के कोड प्रवाह को अवरुद्ध कर रहे हैं जो while
लूप चलाकर callBack
कतार के अंदर मौजूद है। इसलिए test
की दूसरी कॉल निष्पादित करने में 10 सेकंड लग रही है।
test(); //call 1
callBack queue ----> [function(){ while(){} }]
test(); //call 2
callBack queue ----> [function(){ while(){} }, function(){ while(){} }]
नोट: वापस कतार कॉल इसके निष्पादन शुरू कर देंगे जब वहाँ कॉल स्टैक पर अमल करने में कुछ भी नहीं है।
इसके लिए सर्वश्रेष्ठ पढ़ें, Event Loop।
स्रोत
2016-09-18 06:49:45
जावास्क्रिप्ट "मल्टी-थ्रेडेड" नहीं है; धारावाहिक में निष्पादित कार्य, समानांतर नहीं। –