首页 > 其他 > 详细

promise例题

时间:2020-07-05 00:05:11      阅读:63      评论:0      收藏:0      [点我收藏+]
            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

promise例题

原文:https://www.cnblogs.com/rickdiculous/p/13237283.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!