• 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

  • 相关阅读:

    2018.10.18 常用API部分测试题
    2018.10.18课堂笔记HashMap之前
    JavaScript 的 this 原理
    vue h5转换uni-app
    Vue.js 3.0 新特性预览
    ES6模块与CommonJS的区别
    同源策略和跨域问题
    一口气了解 babel
    媒体查询,移动端常见布局以及其他
  • 原文地址:https://www.cnblogs.com/rickdiculous/p/13237283.html
Copyright © 2020-2023  润新知