javascript - Promise all 中未捕获的异常
问题描述
我在执行以下代码时收到未捕获的异常。当我尝试创建自动拒绝的承诺时,它失败了。
如果我在拒绝承诺之前设置一个小的超时,它会起作用。
function emptyPromise(fail) {
return new Promise(function (resolve, reject) {
if (fail) {
reject({
status: -20,
responseText: {
reason: 'Empty promise',
success: false
}
});
} else {
resolve();
}
});
}
var arr = [emptyPromise(true)];
Promise.all(arr).then(function(){}).catch(function(e){console.log(e);})
解决方案
我刚刚找到了一个解决方案,即使在检查“暂停异常”时,它也不会在 chrome 开发工具中抛出异常。
function emptyPromise(fail) {
return Promise.reject('rere');
}
emptyPromise(true).catch(function(){console.log(arguments)})
这种静态承诺拒绝方法为我节省了很多。创建空承诺时,请使用 Promise.resolve(...) 和 Promise.reject(...) 来创建它们。