获取API如何获取catch中的响应体?

时间:2017-04-12 06:21:30

标签: javascript fetch

我从服务器得到了这样的响应:

Request URL:http://api.bfexchange.net/wallet/balance
Request Method:GET
Status Code:504 Gateway Time-out
Remote Address:52.78.140.154:80
Referrer Policy:no-referrer-when-downgrade

但是在catch fetch API中打印错误只会返回Error对象。

fetch(...)
.then(...)
.catch((err) => {
    console.dir(err);
});

它打印(来自谷歌浏览器):

TypeError: Failed to fetch
    message: "Failed to fetch"
    stack: "TypeError: Failed to fetch"
    __proto__: Error
index.js:82 

我希望获得正确的错误处理状态代码,就像服务器没有响应一样。

在这种情况下,有没有办法获得响应数据?否则,我可以尝试哪些替代方案?

任何建议都会非常感激!

1 个答案:

答案 0 :(得分:3)

如果服务器使用CORS,您将获得5xx响应,但它不会被拒绝;承诺将通过回复得到解决。如果服务器不使用CORS,您将永远不会看到响应,并且将始终拒绝承诺(除非您使用" no-cors",在这种情况下,您可以获得不透明的响应,在某些服务工作者场景中很有用。)