首页 > 解决方案 > 在 fetch() 调用中捕获除网络问题以外的错误的正确方法

问题描述

我的呼叫路线fetch()可以产生两种可能的响应,我想做不同的事情。但是如果我没记错catch()的话, offetch()只会捕获网络错误。

下面是我当前的代码,但它对我来说看起来很奇怪,我觉得有一种更合适的方法来做到这一点。如果是这样,它是什么?

fetch(`${this.baseUrl}/wp-json/contact/v1/send`, {
  method: 'POST',
  body: formData
})
  .then((res) => {
    if (res.status === 304) {
      // do something
    } else {
      // do something different
    }
  })
  .catch(error => {
    console.log(error)
  })

标签: javascriptvue.jspromisefetch

解决方案


如果你正在使用async await你可以使用经典try...catch...finally

try {
    await fetch(`${this.baseUrl}/wp-json/contact/v1/send`, {
            method: 'POST',
            body: formData
          })

} catch (e) {
    console.error(e);
} finally {
    console.log('We do cleanup here');
}

推荐阅读