promise 执行顺序

console.log('main-1')

function foo(param){

var p=new Promise(function(resolve,reject){

console.log('promise-1');

if(parem==1){

resolve('1')

}else{
reject('2')

}

console.log('promise-2')

})

return p;

}

console.log('main-2');

foo(1).then(function(value){
console.log('then-1');
})

console.log('main-3')

运行结果是 main-1
main-2
promise-1
promise-2
main-3
then-1

为什么main-3 会在promise运行之后


温温酱
浏览 1127回答 1
1回答

郎朗坤

因为Promise内部除了resolve和reject外,都是同步的。也就是说Promise内执行顺序是这样**先console.log('promise-1');**然后碰到了resolve,异步的,跳过等待执行。**然后同步往下执行下去,好碰到了console.log('promise-2'),执行。**ok同步的代码执行完了,Promise结束。**然后往下执行,console.log('main-3'),执行完这个console后,ok同步的代码又执行完了。**执行Promise里的异步代码,也就是resolve,console.log('then-1');异步代码是等待一段时间再执行的,与此同时,同步代码不会停止执行会一直往下走
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript