首页 > 解决方案 > 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);})

标签: javascriptpromise

解决方案


我刚刚找到了一个解决方案,即使在检查“暂停异常”时,它也不会在 chrome 开发工具中抛出异常。

function emptyPromise(fail) {
    return Promise.reject('rere');
}
emptyPromise(true).catch(function(){console.log(arguments)})

这种静态承诺拒绝方法为我节省了很多。创建空承诺时,请使用 Promise.resolve(...) 和 Promise.reject(...) 来创建它们。


推荐阅读