我有一个非常简单的 Javascript 程序在 Node 中运行,它每分钟从网站 API 中提取数据,解析它,并将其显示在控制台上。
结构如下所示:(更新)
var getData = function() {
try {
http.get(
{"host": "api.coindesk.com", "path": "/v1/bpi/currentprice.json"},
function(response) {
var body = '';
response.on('data', function(d) {
body += d;
});
response.on('end', function() {
var parsed = JSON.parse(body);
console.log(parsed.time.updatedISO + " ::: $" + parsed.bpi.USD.rate_float);
});
}
);
} catch(error) {
// Don't care if it fails, just wait and get the next minutes data
console.log(error);
}
}
SetInterval(getData, 60000);
当由于连接或解析错误而引发错误时,整个程序都会停止,我需要它忽略该错误并在 60 秒内重试。我不在乎是否错过一分钟的数据,我只需要它继续运行。
错误示例:
events.js:136
throw er; // Unhandled 'error' event
^
Error: getaddrinfo ENOTFOUND api.coindesk.com api.coindesk.com:80
at errnoException (dns.js:55:10)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:97:26)
我该怎么做?
最佳答案
它会停止,因为您从 catch
block 中返回
。删除return
关键字,它将继续运行。
var getData = function() {
try {
// Retrieve and parse data
throw Error("error");
console.log("The parsed data");
} catch(error) {
console.error(error);
}
}
setInterval(getData, 1000);
关于javascript - 忽略 SetInterval 函数期间的错误并继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48064448/