setTimeout(() => {
console.log('a')
}, 1)
setTimeout(() => {
console.log('b')
}, 0)
setTimeout(() => {
console.log('c')
}, 10)
setTimeout(() => {
console.log('d')
}, 4)
for(let i = 0;i<1000;i++){
console.log(100);
}
结果是a、d、c、b
测试环境:chrome控制台
为了解答这个问题:我测试了 Chrome/Edge/Safari/Firefox。(都是最新浏览器)
浏览器内部也是不断再调整,所以不要太纠结这种问题,但是关于 setTimeout 还是有些知识点要关注下,
比如:4ms 是怎么回事?
https://html.spec.whatwg.org/...
https://developer.mozilla.org...
以及与 promise 相关的任务队列执行顺序问题。
望有些帮助。