TTgao 2022-09-13 16:03 采纳率: 0%
浏览 40

是一个关于执行循序的问题

是一个关于执行循序的问题

async function async1() {
    console.log('async1 start')
    await async2()
    console.log('async1 end')
}
async function async2() {
    new Promise(function (resolve) {
        console.log("promise 1")
        resolve()
    }).then(function () {
        console.log('promise 2')
    })
}
console.log('script start')
setTimeout(() => {
    console.log('setTimeout')
}, 0)
async1()
new Promise(function (resolve) {
    console.log("promise 3")
    resolve()
}).then(function () {
    console.log('promise 4')
})
console.log('script end')

运行之后 打印出来的
script start
async1 start
promise 1
promise 3
script end
promise 2
async1 end
promise 4
setTimeout


我不明白的的点就是在于 打印了promise1之后 除了.then 加入了微任务 
然后执行的为什么不是async1() 函数里的 async1 end 
而是打印了下一个Promise的立即执行里面promise 3等等其他的任务
  await 是等待这个async2函数彻彻底底的运行完毕(宏任务和微任务全部执行)才会执行后面的嘛?

还请大佬指点迷津
  • 写回答

2条回答 默认 最新

  • 一只成序源 2022-09-13 16:17
    关注

    await 就是等待回调再往后走,异步函数的同步写法。所以会先执行宏任务,在会去走他

    评论

报告相同问题?

问题事件

  • 创建了问题 9月13日

悬赏问题

  • ¥15 obsidian的中文层级自动编号
  • ¥15 同一个网口一个电脑连接有网,另一个电脑连接没网
  • ¥15 神经网络模型一直不能上GPU
  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
  • ¥20 wpf datagrid单元闪烁效果失灵
  • ¥15 券商软件上市公司信息获取问题
  • ¥100 ensp启动设备蓝屏,代码clock_watchdog_timeout
  • ¥15 Android studio AVD启动不了
  • ¥15 陆空双模式无人机怎么做
  • ¥15 想咨询点问题,与算法转换,负荷预测,数字孪生有关