向Promise的resolve()传入自身会触发TypeError拒绝?求示例代码
Promise resolve传入自身触发TypeError的问题解答
触发错误的条件
当你在新创建的Promise的执行器函数中,调用resolve()时传入这个Promise实例本身,就会触发TypeError,导致Promise被拒绝。简单说就是:不能让一个Promise自己解析自己,这会造成循环引用的逻辑矛盾。
复现代码示例
const myPromise = new Promise((resolve) => { // 传入当前创建的Promise实例myPromise,触发错误 resolve(myPromise); }); // 捕获并打印错误 myPromise.catch(err => { console.log(err); // 控制台输出:TypeError: Chaining cycle detected for promise #<Promise> });
为什么会有这个限制
这种规则是为了避免无限循环的Promise链——如果允许Promise解析自身,这个Promise永远无法进入最终的完成或拒绝状态,会导致逻辑死锁,所以JS引擎直接抛出错误终止这种无效操作。
内容的提问来源于stack exchange,提问作者Parminder Singh
相关产品推荐
相关产品推荐

