只处理承诺错误的正确方法是什么?

cai*_*ci2 0 javascript promise

请参阅下面的示例,其中method将返回promise并相应地解析/拒绝该promise.我现在对处理它的决心不感兴趣,我只是想处理拒绝.

有没有更好的,跨浏览器的方式来做到这一点,而没有声明无用的成功功能?

  MyClass.method().then((sData) => {
    // Nothing to do here
  }, (eData) => {
    // Important code to run here
  })
Run Code Online (Sandbox Code Playgroud)

在我的代码中我使用AngularJS承诺.但是,该问题与其他常见库和本机Promise对象相关.

Wil*_*een 6

正如其他答案所述,使用.catch该功能。

MyClass.method()
  .catch(error => { error handling logic (async)})
Run Code Online (Sandbox Code Playgroud)

我想补充的是以下内容:

通常在.then()函数中您提供 2 个这样的回调(这些回调始终会异步执行):

const promise2 = doSomething().then(successCallback, failureCallback);
Run Code Online (Sandbox Code Playgroud)

然而.catch()then()successCallback 填写的简写null

then(null, failureCallback)
Run Code Online (Sandbox Code Playgroud)


31p*_*piy 5

是! 您可以使用catch此功能:

MyClass.method()
  .catch(error => { ... })
Run Code Online (Sandbox Code Playgroud)

假设MyClass.method()返回一个有效的Promise API对象,catch应该能够捕获任何拒绝.