setTimeOut(fn, 0)

151 阅读1分钟

先看一段代码

setTimeout(()=> {
  console.log(0);
}, 0)

console.log(1);
let i = 1000
while (i--) { }
console.log(2);

setTimeout(() => {
  console.log(3);
})

输出

1
2
0
3

setTimeOut 属于异步任务,并且优先级最低。先执行全局Script代码,执行完同步代码调用栈清空后,再执行异步任务。

setTimeOut(fn, 0)可以实现写的代码前端,却最后执行的效果。 比如

setTimeOut(()={
    close()
}, 0)

可以实现当前同步、异步任务全部执行完成后执行close()操作