【发布时间】:2019-06-26 11:32:56
【问题描述】:
try {
fetch(url)
.then(res => res.json())
.then(data => {
console.log(data);
});
}
catch (e) {
console.log(e);
}
所以有时我会从中得到ECONNRESET 错误,我希望以某种方式忽略它。
【问题讨论】:
-
Fetch 是异步的,并返回一个承诺。在承诺完成其异步代码所做的任何事情之前,您得到的错误不会被抛出(在这种情况下,获取 URL 的响应或连接失败)。同时,您的
try...catch...语句在异步代码完成之前,在抛出错误之前继续。因此,通过 Promise,您可以通过将.catch(callback)附加到错误来捕获错误,类似于.then()。回调是一个接收错误作为其唯一参数的函数。 -
@IceMetalPunk 但我应该把它放在哪里?在获取 json 之前还是最后?
-
您可以在 Promise 链中的任何位置附加
.catch,就像您可以在链中的任何位置附加.then一样。它将捕获在链中它之前调用的任何函数中抛出的错误。因此,如果您只想捕获请求中的错误,例如连接错误,请将其放在 fetch 和 JSON 解析之间。如果你想让它捕获 all 错误,请将它放在 Promise 链的末尾。
标签: javascript node.js node-fetch