कहो कि मैं निम्नलिखित कोड है:Javascript क्रियान्वयन आदेश()
function testA {
setTimeout('testB()', 1000);
doLong();
}
function testB {
doSomething();
}
function doLong() {
//takes a few seconds to do something
}
मैं निष्पादित testA()
। मैंने पढ़ा है कि जावास्क्रिप्ट एकल-थ्रेडेड है। 1000 मिलीसेकंड के बाद क्या होता है, जब testB()
के लिए टाइमआउट पहुंच जाता है?
कुछ संभावनाओं मैं के बारे में सोच सकते हैं:
testB()
doLong()
के बाद निष्पादित करने के लिए ऊपर कतार में है और कुछ और यह कहा जाता है समाप्त कर दिया है।doLong()
तुरंत समाप्त हो जाता है औरtestB()
शुरू कर दिया है।doLong()
एक छोटे से दिया जाता है लंबे समय तक बंद कर दिया जा रहा है (या तो स्वतः या उपयोगकर्ता को संकेत के बाद) औरtestB()
शुरू कर दिया है इससे पहले कि निष्पादित करने के लिए है।doLong()
रुका हुआ है,testB()
शुरू कर दिया है।testB()
समाप्त होने के बाद,doLong()
फिर से शुरू हो गया। सही जवाब
क्या है? यह कार्यान्वयन निर्भर या मानक का हिस्सा है? *
This question, समान है, लेकिन समान नहीं है जहाँ तक मैं बता सकता है।
भी लिंक आप बेहतर समझ Javascript क्रियान्वयन के लिए सिफारिश कर सकते हैं की सराहना की जाएगी।
धन्यवाद!
* हाँ, मुझे पता है कि नहीं सभी ब्राउज़रों मानकों :(
मुझे विश्वास था कि 'setTimeout (function() {testB(); }, 1000); 'सबसे अच्छा तरीका है, क्या मैं गुमराह था? –
@ छाया विज़ार्ड: हाँ, बहुत ज्यादा गुमराह। जहां तक मुझे पता है कि आपके रास्ते और खान के बीच कोई अंतर नहीं है (सिवाय इसके कि मेरा कोर्स कम है: डी)। उदाहरण के लिए, कल्पना करें कि क्या हमने आपकी अभिव्यक्ति को एक चर में खींच लिया है: 'var f = function() {testB(); }; सेटटाइमआउट (एफ, 1000); '। अभी भी वही अर्थ है, लेकिन अब आप अनावश्यकता देख सकते हैं। – Jakob
उत्तर के लिए और एक स्ट्रिंग के बजाय setTimeout पर फ़ंक्शन पास करने के बारे में सलाह के लिए धन्यवाद। ऐसा लगता है कि मैं पढ़ रहे ट्यूटोरियल थोड़ा संदिग्ध हैं;) –