“承诺拒绝”与“尝试捕获”之间的区别

时间:2017-03-16 04:01:01

标签: ecmascript-6 promise

var promise = new Promise(function(resolve, reject) {
  try {
    throw new Error('test');
  } catch(e) {
    reject(e);
  }
});
promise.catch(function(error) {
  console.log(error);
});

我们可以使用“try-catch”来抛出错误

// mothod 2
var promise = new Promise(function(resolve, reject) {
  reject(new Error('test'));
});
promise.catch(function(error) {
  console.log(error);
});

我们也可以使用“拒绝”来抛出错误。

他们之间有什么区别?

2 个答案:

答案 0 :(得分:2)

  1. 使用try-catch块无法处理从异步函数抛出的异常。
  2. 承诺是可以连锁的;阻止我们嵌套影响可读性的代码。

答案 1 :(得分:0)

没有有效的区别。在这两种情况下,您都在调用reject()时出错。

以下内容也与您的内容相同:

var promise = new Promise(function(resolve, reject) {
  throw new Error('test');
});


var promise = Promise.reject(new Error('test'));


var promise = Promise.resolve().then(function () { throw new Error('test'); });