由於我對JavaScript的使用經驗不太熟悉,所以我對函數順序感到困惑。Javascript處理函數同時?
在以下示例中,我期望的console.log()後等待要被處理()結束。
function wait() {
setTimeout(function() {
console.log("wait " + new Date().getTime());
}, 3000);
}
wait();
console.log("global " + new Date().getTime());
控制檯顯示這些值:
全球1499993535591等待1499993538592
爲什麼被處理的第二個函數的第一個甚至沒有完成之前?
當我在函數內部填充一個數組,並且需要在該函數之外使用它時,這會導致一些問題,因爲它仍然是空的。
的setTimeout是工作無阻塞 – Hamms
異步代碼可能會非常棘手https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-異步調用 –
JavaScript是單線程的。什麼都不會同時發生。異步函數必須等待主線程完成纔能有資格運行。即使你的'setTimeout'上的延遲爲'0',執行順序仍然是相同的。 – 4castle