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-1main-2promise-1promise-2main-3then-1为什么main-3 会在promise运行之后
1 回答
郎朗坤
TA贡献1921条经验 获得超9个赞
因为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');
异步代码是等待一段时间再执行的,与此同时,同步代码不会停止执行会一直往下走
添加回答
举报
0/150
提交
取消