从那时起承诺招募

时间:2018-08-08 09:00:44

标签: javascript asynchronous es6-promise

是否有一种方法可以从then回调直接跳转到JavaScript Promise“ then-chain”内部的catch回调?

因此,举例来说,我正在从提取调用中检查数据:

fetch('api')
  .then(response => {
      if (response.json() === null) {
         // error
         // call catch
      }
      else {
       return response.json();
      }
  })
  .then(data => console.log(data.message))
  .catch(error => console.log(error));

是否有最佳做法或变通办法?

2 个答案:

答案 0 :(得分:2)

您可以在第一个.then

中抛出错误
promise.then(response => {
      if (response.json() === null) {
         // error
         // call catch
           throw new Error('error !');
      }
      else {
       return response.json();
      }
  })
  .then(data => console.log(data.message))
  .catch(error => console.log(error)); // error !

答案 1 :(得分:2)

您可以通过错误呼叫Promise.reject。您将在catch()方法内收到错误消息。

fetch('api')
    .then(response => {
        if (response.json() === null) {
            return Promise.reject('Somethind bad happened');
        }
        else {
            return response.json();
        }
    })
    .then(data => console.log(data.message))
    .catch(error => console.log(error));