【问题标题】:Unable to handle errors in javascript promise无法处理 javascript 承诺中的错误
【发布时间】:2017-04-14 12:43:29
【问题描述】:

为什么它不运行下面的代码“console.log(err)”?而是返回“TypeError: Cannot create property 'uncaught' on string 'error in promise'”

function abc() {
    throw "error in promise";
    return 123;
};
abc().catch(function(err) {
    console.log(err)
}).then ( abcMessage =>
    console.log(abcMessage)
)

【问题讨论】:

  • 不要扔字符串;抛出错误。 new Error("error in promise")
  • 谢谢!将其修改为 new Error("error in promise") 并且错误消失了,但是现在它不是运行 console.log(err) 而是抛出错误 Error: error in promise before 它到达 console.log(err)
  • 承诺在哪里?

标签: javascript es6-promise


【解决方案1】:

.then.catch 需要构造一个 Promise。你没有回报一个承诺。 Promise 回调(执行器)有两个参数,一个解析器和一个拒绝器。根据代码中发生的情况,如果一切正常,您可能需要调用 resolve,或者如果出现问题则拒绝。

function abc() {
  return new Promise(function(resolve, reject) {
    reject(123)
  });
};


abc()
  .catch(err => {
    console.log(err);
    return err;
  })
  .then(abcMessage => {
    console.log(abcMessage)
  });
new Error("error in promise")

【讨论】:

  • 你所谓的“承诺回调”其实有一个正式的名字,就是executor
猜你喜欢
  • 2020-07-01
  • 2016-03-02
  • 2021-02-08
  • 2020-08-17
  • 2018-06-01
  • 1970-01-01
  • 2015-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多