溫溫醬
2018-07-09 15:30:35
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')運(yùn)行結(jié)果是 main-1main-2promise-1promise-2main-3then-1為什么main-3 會(huì)在promise運(yùn)行之后
1 回答

郎朗坤
TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊
因?yàn)镻romise內(nèi)部除了resolve和reject外,都是同步的。也就是說Promise內(nèi)執(zhí)行順序是這樣
**先console.log('promise-1');
**然后碰到了resolve,異步的,跳過等待執(zhí)行。
**然后同步往下執(zhí)行下去,好碰到了console.log('promise-2'),執(zhí)行。
**ok同步的代碼執(zhí)行完了,Promise結(jié)束。
**然后往下執(zhí)行,console.log('main-3'),執(zhí)行完這個(gè)console后,ok同步的代碼又執(zhí)行完了。
**執(zhí)行Promise里的異步代碼,也就是resolve,console.log('then-1');
異步代碼是等待一段時(shí)間再執(zhí)行的,與此同時(shí),同步代碼不會(huì)停止執(zhí)行會(huì)一直往下走
添加回答
舉報(bào)
0/150
提交
取消