javascript - 如何.catch a Promise.reject

标签 javascript es6-promise

我有一个辅助函数,用于将 fetch 与 CouchDB 一起使用,其结尾为:

...
return fetch(...)
  .then(resp => resp.ok ? resp.json() : Promise.reject(resp))
  .then(json => json.error ? Promise.reject(json) : json)

当我在其他地方使用它时,我的印象是我可以.catch那些明确的拒绝:

  above_function(its_options)
    .then(do_something)
    .catch(err => do_something_with_the_json_error_rejection_or_resp_not_ok_rejection_or_the_above(err))

但是唉,我似乎无法掌握拒绝的信息。 我遇到的具体错误是 HTTP 401 响应。

什么给出了?

(请注意,.then 中存在隐式 ES6 return)

最佳答案

    function test() {
      return new Promise((resolve, reject) => {
        return reject('rejected')
      })
    }

    test().then(function() {
      //here when you resolve
    })
    .catch(function(rej) {
      //here when you reject the promise
      console.log(rej);
    });

关于javascript - 如何.catch a Promise.reject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46005954/

相关文章:

javascript - 当数组处理完毕后,如何退出 promise 序列?

javascript - 这是处理 JavaScript Promise 的正确方法吗?

javascript - ES6 : How to use await with callbacks

javascript - 这个 Promise.all 解决方案有什么问题

javascript - 在解决 promise 之前运行多个 ajax 调用

javascript - 无法在 core.js 文件中设置未定义的属性 'value'

javascript - 将表变量作为邮件主题发送

javascript - 上传文件时检测取消的拖放操作

javascript - 为什么 window.open 在 setTimeout <= 1000ms 时不会被阻塞?

javascript - 在我的 typescript 文件中正确引用 (javascript) jquery 插件