JavaScript 里 Promise 链中 then 回调抛错后,后面的 catch 为什么有时接不住?
写业务代码时经常遇到这种状况:一个接口请求失败后,你在 .then() 里做了错误处理,但代码还是走到了全局的 unhandledrejection 事件,控制台飘红。或者反过来,明明某个 .then() 里 throw new Error() 了,后面的 .catch() 却像没看见一样,最后错误跑到了另一个分支里。这不是 Promise 实现有 bug,而是很多人对 then 链的返回值传递和错误冒泡机制理解得不够完整。Promise 的错误处理依赖链式调用中每个环节的返回状态,一旦在某个 then 里把 rejection 消化掉,或者返回了一个新的 Promise 把错误吞了,后续的 ...