zoukankan      html  css  js  c++  java
  • promise例题

                let promise = new Promise(resolve => {
                    console.log('Promise');
                    resolve();
                });
                promise.then(function(){
                    console.log('resolved');
                });
                console.log('hello~');
                

    打印结果一次为Promise hello~ resolved

    Promise 新建后立即执行,所以首先输出的是Promise,然后,then方法指定的回调函数,将在当前脚本所有同步任务执行完才会执行,所以resolved最后输出

    let promise=new Promise(resolve=>{
    
    resolve();
    
    console.log('promise');//1
    
    
    
    })
    
    
    
    console.log(promise);//2
    
    
    
    setTimeout(function(){
    
    console.log('hello');//4
    
    })
    
    promise.then(function(){
    
    console.log('resolved');//3
    
    })
    
    //then和setTimeout不都是异步操作吗,为什么hello还是最后输出呢?

    then和setTimeout确实都是异步的,但是这里又涉及到异步的宏任务和微任务,setTimeout是宏任务,Promise整体是微任务,主线程执行完了之后先从微任务栈里面获取微任务执行,没有微任务了,就去宏任务栈里面获取宏任务执行,微任务是比宏任务先执行的,所以先打印resolved在打印hello

  • 相关阅读:
    WHENEVER SQLERROR EXIT AND DDL
    WHENEVER SQLERROR EXIT AND DML
    我的友情链接
    我的友情链接
    我的友情链接
    我的友情链接
    我的友情链接
    我的友情链接
    我的友情链接
    我的友情链接
  • 原文地址:https://www.cnblogs.com/rickdiculous/p/13237283.html
Copyright © 2011-2022 走看看