小编Ivo*_*Ivo的帖子

JavaScript 事件循环乱序执行

我正在尝试书中的一个示例来确认 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() 完成之前就被冲洗掉了?

javascript event-loop settimeout

4
推荐指数
1
解决办法
776
查看次数

标签 统计

event-loop ×1

javascript ×1

settimeout ×1