then 函数实现逻辑中 fn2 默认值应为 (e) => { throw e }
来源:8-20 手写 Promise-then 的链式调用
BryanLi93
2022-03-07
你好,双越老师:
前提:then 函数实现逻辑中,很多同学提出过,state === ‘fulfilled’ 处理应该为 resolve(newReason),不然会出现 .catch 无法将新 promise 的 state 变为 fulfilled,执行后续 .then 逻辑的情况。
新问题:源码中40行 fn2 = typeof fn2 === 'function' ? fn2 : (e) => e。会出现这样的问题,new MyPromise((resolve, reject) => reject(100)).then(fnA).catch(fnB) 中 .catch 无法捕捉,因为被 .then 构造的 fn2 正常返回。所以 fn2 的默认函数应将错误继续抛出,才能让后面的 catch 捕捉到。
写回答
1回答
-
双越
2022-03-07
感谢反馈~
这里补充的很好
00
相似问题