इस व्यवहार पर भरोसा करना सुरक्षित नहीं है। मैंने एक टेस्ट स्क्रिप्ट लिखी है जो सेटटाइमआउट (..., 0), और का उपयोग करके कई फ़ंक्शंस शेड्यूल करता है (और वे बदले में कई फ़ंक्शंस शेड्यूल करते हैं) जिस क्रम में फ़ंक्शंस को कॉल किया गया था वह हमेशा समान नहीं था ऑर्डर जिसमें सेटटाइमआउट को कहा जाता था (कम से कम क्रोम 11 में, जिसे मैं स्क्रिप्ट चलाने के लिए उपयोग करता था)।
आप यहां स्क्रिप्ट को देख/चला सकते हैं: http://jsfiddle.net/se9Jn/ (स्क्रिप्ट क्रॉस-ब्राउज़र संगतता के लिए वाईयूआई का उपयोग करता है, लेकिन वाई। लैटर आंतरिक रूप से सेटटाइमआउट का उपयोग करता है)।
ध्यान दें कि यदि आप केवल स्क्रिप्ट चलाते हैं और कंसोल पर देखते हैं, तो आप शायद अपमानजनक आदेश नहीं देखेंगे। लेकिन अगर स्क्रिप्ट शुरू करें, तो दूसरे टैब पर स्विच करें, कुछ पेज लोड करें, और टेस्ट पेज पर वापस आएं, आपको कंसोल में ऑर्डर के बाहर कॉलबैक के बारे में त्रुटियां दिखाई देनी चाहिए।
आप एक गारंटीकृत आदेश की जरूरत है, मैं पिछले समारोह के अंत में अगले समारोह का समय निर्धारण की सिफारिश करेंगे:
setTimeout(foo, 0);
...
function foo() {
...
setTimeout(bar, 0);
}
स्रोत
2011-05-13 22:19:07
: गारंटी
foo
के लिएbar
आदेश आप कर सकते हैंअब, , आप इस पृष्ठ पर एक नज़र डालना चाहेंगे http://www.onsip.com/blog/2012/06/29/avoiding-javascript-settimeout-and-setinterval-problems –