我正在尝试书中的一个示例来确认 JavaScript 事件循环是如何工作的,下面是代码
const baz = () => console.log("baz");
const bar = () => console.log("bar");
const foo = () => {
console.log("foo");
setTimeout(bar, 0);
baz();
}
foo();
Run Code Online (Sandbox Code Playgroud)
setTimeout 这里的工作原理很简单(无序执行)输出是
foo
baz
bar
Run Code Online (Sandbox Code Playgroud)
我不明白的是我添加一行时的顺序
const baz = () => console.log("baz");
const bar = () => console.log("bar");
const foo = () => {
console.log("foo");
setTimeout(bar, 0);
baz();
}
setTimeout(baz, 0); // this somehow runs before foo() is finished
foo();
Run Code Online (Sandbox Code Playgroud)
输出是
foo
baz
baz
bar
Run Code Online (Sandbox Code Playgroud)
为什么第二个 setTimeout 在 foo() 完成之前就被冲洗掉了?