[英]What happens to code after history.back()?
我有如下代碼:
window.history.back();
myFunction(10);
history.back()
是阻塞/非阻塞調用嗎?
是否保證將執行myFunction()
? 還是不會被執行?
這是一種可能的競爭條件,其中history.back()
異步發生並且是否調用myFunction()
取決於不可控事件的時間?
因此,實際的歷史操作代碼(在 JS 實現內部)將在主事件循環的下一次運行期間執行。 您對myFunction
調用在當前執行輪次中同步執行,因此它將始終在合規環境中執行。
但是,只有myFunction
同步代碼才能保證執行。 考慮這個例子:
function myFunction() {
console.log('synchronous');
debugger
setTimeout(function() {
console.log('async');
debugger
})
}
window.history.back();
myFunction();
總是命中第一個調試器語句。 第二個,使用setTimeout
推遲到未來的事件循環滴答,不會。
這篇文章很好地解釋了 JavaScript 事件循環
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.