zoukankan      html  css  js  c++  java
  • promise的队列,宏任务,微任务,同步任务

        // promise里面有一个特别的任务,就是微任务
            // 同步任务>微任务>宏任务
            setTimeout(() => {
                console.log("setTimeout");
            }, 0);   //代表的是宏任务
            new Promise(resove=>{
                console.log("promise"); //是同步任务
                resove()
            },reject=>{
    
            }).then(()=>{ //then相当等待,里面的结果必须等待上面resove()了才可以执行
                console.log("成功了");  //代表的是微任务
            })
            console.log("hello");
              

    这里面输出的结果是:

            new Promise(resove => {
                setTimeout(() => {
                    // console.log("setTimeout"); //宏任务
                    resove()
                    console.log("setTimeout");
    
                }, 0);
                console.log("promise"); //同步任务
            }).then(() => { 
                //待上面resove()了,才可以执行里面的代码
                console.log("成功了"); //微任务
            })
            console.log("hello"); //同步任务
    /* 
    不管什么任务,一旦放入了主线程中执行,必须等主线程里的任务执行完,才可以执行下一个放入主线程的任务
    所以 代码执行时,一开始先到定时器,定时器是异步的并且是宏任务,先放入内存中,不执行。
    再往下走,经过了第一个同步任务promise,放入主线程中执行,再走,发现then,不执行,
    继续往下,第二个同步任务(hello)执行,
    现在同步走完,开始执行异步的任务,进到定时器里,说明这里将定时器放入主线程了,不管console.log("setTimeout"); 放在resove()的上面还是下面,都会先输出setTimeout,因为要先将定时器先处理完,
    所以最后再输出 '成功了' . 所以这个例子也告诉我们,同步任务>微任务>宏任务 并不是绝对的
    */

    心想事成
  • 相关阅读:
    Java:day11
    Java:day10
    Java:day9
    Java:day8
    纯虚函数和抽象类
    C++的虚拟继承
    派生类构造函数、析构函数的定义和调用次序
    c++的继承方式——公有、保护、私有
    操作系统中系统调用的执行过程
    C++的类
  • 原文地址:https://www.cnblogs.com/xiao1314/p/14412426.html
Copyright © 2011-2022 走看看