异常抛出处理
用 try/catch 包裹 executor 的执行,同步异常会被捕获并自动调用 reject。
本节要点
在 constructor 中,用 try { executor(resolve, reject) } catch(err) { reject(err) } 包裹 executor 调用。当 executor 内部抛出同步错误时,自动转为 reject 状态。
完整代码
Loading code...
注意
异步错误(如 setTimeout 中的 throw)无法被捕获,属于正常行为。
运行示例
示例一:同步异常被捕获并自动 reject
示例代码
Loading...
示例二:正常 resolve 不受影响
示例代码
Loading...
示例三:异步异常无法被捕获
示例代码
Loading...