在下面的代码中:
var p1 = new Promise(function (resolve, reject) {
throw 'test1';
});
var p2 = new Promise(function (resolve, reject) {
reject('test2');
});
p1.catch(function (err) {
console.log(err); // test1
});
p2.catch(function (err) {
console.log(err); // test2
});
从
reject
api使用p2
(在Promise
中)与使用p1
抛出错误(在throw
中)之间有什么区别吗?完全一样吗?
如果相同,为什么我们需要一个
reject
回调呢? 最佳答案
是的,您cannot异步使用throw
,而reject
是回调。例如,一些超时:
new Promise(_, reject) {
setTimeout(reject, 1000);
});
不,至少当您的语句跟随其他代码时才不会。
throw
立即完成解析程序功能,而调用reject
则继续正常执行-在“标记” promise 为已拒绝之后。另外,如果您使用
throw
错误对象,则引擎可能会提供不同的异常调试信息。对于您的特定示例,您正确地认为
p1
和p2
与外界是无法区分的。关于javascript - promise 构造函数拒绝调用与抛出错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28703241/