为什么 alert(); 运行 在 console.log() 之前;
Why does alert(); run before console.log();
我的问题与其他问题有何不同
我正在使用 ES6 语法。我看的其他问题使用 ES5 语法。
问题
为什么 alert();
运行 在 console.log();
之前?我可以做到 console.log();
在 alert();
之前执行吗?
我的代码
console.log("Hello!");
alert("Hi!");
console.log("Hello!");
setTimeout(() => alert("Hi!"), 0);
基本上:console.log() 是 技术上首先被调用。† 然而,浏览器实际上重新绘制自己或控制台更新也需要一点时间。不过,在它可以自我更新之前,alert() 已经触发,即 "stop everything before I'm confirmed"。所以发送到 console.log 的消息已发送,但视觉确认不及时。
在 0 秒 setTimeout 中包装一些东西是告诉 JavaScript "hey call me immediately after everything is finished running & updating."
的老把戏
† 您可以通过在警报对话框之前执行类似 console.log(new Date().toString());
的操作来验证这一点,然后等待几分钟再关闭警报。请注意,它会记录您第一次 运行 它的时间, 而不是 现在的时间。
检查下面的测试,在 window.alert 函数触发之前,它将 return 从 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);
我的问题与其他问题有何不同
我正在使用 ES6 语法。我看的其他问题使用 ES5 语法。
问题
为什么 alert();
运行 在 console.log();
之前?我可以做到 console.log();
在 alert();
之前执行吗?
我的代码
console.log("Hello!");
alert("Hi!");
console.log("Hello!");
setTimeout(() => alert("Hi!"), 0);
基本上:console.log() 是 技术上首先被调用。† 然而,浏览器实际上重新绘制自己或控制台更新也需要一点时间。不过,在它可以自我更新之前,alert() 已经触发,即 "stop everything before I'm confirmed"。所以发送到 console.log 的消息已发送,但视觉确认不及时。
在 0 秒 setTimeout 中包装一些东西是告诉 JavaScript "hey call me immediately after everything is finished running & updating."
的老把戏† 您可以通过在警报对话框之前执行类似 console.log(new Date().toString());
的操作来验证这一点,然后等待几分钟再关闭警报。请注意,它会记录您第一次 运行 它的时间, 而不是 现在的时间。
检查下面的测试,在 window.alert 函数触发之前,它将 return 从 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);