簡體   English   中英

為什么 alert(); 在 console.log() 之前運行;

[英]Why does alert(); run before console.log();

我的問題與其他人有何不同

我正在使用 ES6 語法。 我查看的其他問題使用 ES5 語法。

問題

為什么alert(); console.log();之前運行console.log(); ? 我可以這樣做, console.log(); alert();之前執行alert(); ?

我的代碼

console.log("Hello!");
alert("Hi!");
console.log("Hello!");
setTimeout(() => alert("Hi!"), 0);

基本上:從技術上講,console.log()首先被調用。 然而,瀏覽器實際重繪自身或控制台更新也需要一些時間。 在它可以自我更新之前,alert() 已經觸發,它說“在我確認之前停止一切”。 所以發送到 console.log 的消息,但視覺確認不及時。

在 0 秒內包裝一些東西 setTimeout 是告訴 JavaScript “嘿,一切都完成運行和更新立即給我打電話”的老技巧。


† 您可以通過執行諸如console.log(new Date().toString());類的操作來驗證這一點console.log(new Date().toString()); 在警報對話框之前,然后在關閉警報之前等待幾分鍾。 請注意,它會記錄您第一次運行時的時間,而不是現在的時間。

檢查下面的測試,它將在 window.alert 函數觸發之前在 for 循環的 999 次循環中從函數返回。 就我而言,我沒有看到 window.alert。 這是因為警報實際上是在 console.log 的函數循環之后運行的。

 // Test function const test = (br) => { for (let i = 0; i < 1000; i++) { console.log(i); // If br true and cycle #999 - return before // loop end and window.alert exec if(br && i === 999) return; } window.alert('Hello World!'); }; // Test test(true);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM