猿问
求解Promise的一道面试题
最近在看Promise相关知识,遇到一个面试题,以我的理解,应该是先输出a failed,然后b failed b passed的,可是为什么a failed在中间输出了??
慕姐4208626
浏览 874
回答 2
2回答
jeck猫
强调:Promise的每个then或catch都是异步执行的。因此,实际上最先执行的是a.then,但没有定义catch,所以抛出异常,然后异步交给后面的catch处理(a failed)。此时下一个等待执行的是b.catch(b failed),处理完之后,同样异步交给后面的then(b passed)。接着,之前排队的catch(b failed)执行,最后b passed执行。这就是各个then/catch交替执行的原因。整个过程类似于下面的代码:setTimeout(function(){ console.log(1); setTimeout(function(){ console.log(2); }, 0);}, 0);setTimeout(function(){ console.log(3); setTimeout(function(){ console.log(4); }, 0);}, 0);结果打印1 3 2 4,而不是1 2 3 4。
0
0
0
随时随地看视频
慕课网APP
相关分类
面试
关于前端面试题:页面出现空白,怎么排查定位问题?
3 回答
关于面试题,如何快速找出文件(大文件无法一次性读取)中的重复项?
0 回答
我要回答