在Chrome中执行fetch()和setTimeout()的优先级

11 浏览
0 Comments

在Chrome中执行fetch()和setTimeout()的优先级

根据我对事件循环的理解,以下代码会先输出'Sync 2'然后再输出'Sync 4'(同步代码),接着会输出'Promise 3'(fetch返回一个Promise,该Promise会被放置在微任务队列中,在同步代码执行完毕且数据从API返回后执行),最后会输出'Async 1'(setTimeout会被放置在宏任务/回调队列中,优先级最低)。

然而,在最新版的Chrome中,如果我将setTimeout()的时间设置为0,我总是会先得到'Async 1',然后才得到'Promise 3'。我是否有什么误解?在这里,一个尚未解决的Promise是否可能比宏任务队列中的某个任务优先级更低?

0