爲什麼setTimeout
在alert(2)
之後被觸發函數,即使我將時間設置爲0.我以爲javascript是同步語言。setTimeout如何在javascript中工作(理論上)
我只是想從理論上知道javascript中的異步工作。 JavaScript時interpreator
遇到setTimeout
然後會發生什麼,當它遇到的其他功能,那麼會發生什麼
編輯:
setTimeout(function(){
alert(0)
},0)
alert(1)
alert(2)
有一個事件循環。檢查一下:http://ejohn.org/blog/how-javascript-timers-work/ –
'setTimeout'是一個合成的延遲,並且調用的函數不會被同步調用,即使超時設置爲0它們將在當前調用堆棧被清除(即下一個事件循環迭代)後被調用(最早)。這是一件好事 - 它防止釋放[他誰承諾o҉̶nl̨͟y̧瘋狂,T̢҉̸h̴̷̸̢ȩ͘͡͠N͢͢e͏͏͢͠z̛͏͜p̸̕͠ȩ͝͝r҉̛͠d̴i̴̕҉͞a̴̡͝͠n̢͜͟͢͟蜂房̸͝m̷͜i̛͘͞ņ̛͘͟҉d̶̶̡̧͜的̶̧͟͡c̕͝h̶͘͘à͏o҉̴͢s̸͘͘͝͞(或Zalgo)](http://blog.izs.me/post/59142742143/designing-apis-for -asynchrony)。 –
@amit鑑於您的編輯,預期的執行將是1,2和0的警報。 –