码迷,mamicode.com
首页 > 其他好文 > 详细

promise例题

时间:2020-07-05 00:44:42      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:resolve   res   任务   resolved   方法   主线程   nbsp   UNC   timeout   

            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例题

标签:resolve   res   任务   resolved   方法   主线程   nbsp   UNC   timeout   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!