Promise与setTimeout之间的执行顺序

复制代码
/**
 * 要点一:
 *   当Promise进入落地状态时,与该状态相关的处理程序仅仅会被排期,而非立即执行。
 *   而且,跟在添加这个处理程序的代码之后的同步代码一定会在处理程序之前执行。
 *   ——摘自《JavaScript高级程序设计(第四版)》第11章“期约与异步函数” “非重入期方法”小节
 * 要点二:
 *  JS是单线程的,异步任务会被暂存于任务队列,当任务队列中的任务觉得时候到了才到线程上排队执行。
 */
//以下输出顺序: 1 4 7 5 2 3 6 
console.log(1)
setTimeout(() => {
    console.log(2);
    Promise.resolve().then(() => {
      console.log(3)
   })
})
new Promise((resolve, reject) => {
    console.log(4)
    resolve(5)
}).then((data) => {
    console.log(data)
})
setTimeout(() => {
    console.log(6)
})
console.log(7)
复制代码

 

posted @   不乏理想的三师弟  阅读(187)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示