js 执行顺序

  //  javascript是一门单线程语言
    async function async1() { // async关键字 申明这个function是异步的
        console.log('async1 start') //  2
        await async2(); //看到了await关键字 它前面的所有代码块执行完以后 才会执行下面的代码
        console.log('async1 end') // async 函数返回一个 Promise对象 异步挂起 放到 "任务队列"  5
    }
    async function async2() {
        console.log('async2')// 3
    }
    console.log('script start') // 第一个同步任务 首先执行完毕 1
    setTimeout(function () { 
        console.log('setTimeout')// setTimeout()在主线程最早可得的空闲时间执行,也就是说,同步任务和"任务队列"处理完以后才轮到它。它在"任务队列"的尾部添加一个事件 放到最后 7
    }, 0)
    async1()
    console.log('12222222221')
    new Promise(function (resolve) { //传参是个 同步任务 4
        console.log('promise1')
        resolve()
    }).then(function () { 
        console.log('promise2') // then方法会返回一个新的promise 异步挂起 放到 "任务队列" 6
    })
     // 下面没有代码了 js开始按顺序执行刚才放到"任务队列"里的代码块 

参考地址:https://www.cnblogs.com/zwnsyw/p/12772668.html

君不见,高堂明镜悲白发,朝如青丝暮成雪
原文地址:https://www.cnblogs.com/lzhflzjx/p/13986071.html