事件轮询简单了解

42 阅读1分钟

image.png

    /* 
      任务流
       同步任务
            同人先运行
            new Promise 内部 是按照 同步的顺序执行,
            除非你写了异步代码 (定时器/请求相关的)         
       异步任务
            微任务  Promise里面的then或者catch就是微任务,nextTick(nodejs) ,await等待的
                内容后面
            宏任务 setTimeout setInterval  setImmediate(nodejs)
            注意 运行定时器或延时器时注意时间,设置时间短的先运行
        忙时  闲时
         先执行同步任务,遇到微任务1放在当前任务流最下面(如果遇到微任务2,
                    就放到任务流最下面以及任务1下面),遇到宏任务时,
                                                  放在下一个任务流最顶部
         
         任物流就是类似与长方框

    */ 
    
          console.log('JS 开始======================')
                const p = new Promise(function (reslove, rejected) {
                    console.log('promise, 内部代码开始执行')

                    // rejected()
                    reslove() // 这是改变状态啥都不显示,在下面显示

                    console.log('promise, 内部代码执行完毕')
                })

                p.then(() => {
                    console.log('执行 then')
                }).catch(() => {
                    console.log('执行 catch')
                }).finally(() => {
                    console.log('执行 finally')
                })
                console.log('JS 结束=========================')

               /**  1.  console.log('JS 开始======================')
                 *    
                 *  2.  console.log('promise, 内部代码开始执行')
                 *  3.  console.log('promise, 内部代码执行完毕')
                 *  4. console.log('JS 结束=========================')
                 *  5.  console.log('执行 then')
                 *  6.  console.log('执行 finally')
                 *
                 */