【发布时间】:2018-10-22 03:45:54
【问题描述】:
在这个 axios.all 请求示例中,我如何处理请求失败。 IE。如果所有服务器都使用 JSON 响应,一切正常,并且我在一个周期结束时有 JSON 文件。但是,如果其中一台服务器没有响应 JSON 或根本没有响应我在“/data.json”文件中没有任何内容,那么即使所有其他服务器都可以正常工作。如何捕获服务器故障并跳过它?
var fs = require("fs");
var axios = require('axios');
var util = require('util');
var round = 0;
var tmp = {};
var streem = fs.createWriteStream(__dirname + '/data.json', {flags : 'w'});
toFile = function(d) { //
streem.write(util.format(d));
};
start();
setInterval(start, 27000);
function start(){
streem = fs.createWriteStream(__dirname + '/data.json', {flags : 'w'});
monitor();
}
function monitor(){
axios.all([
axios.get('server1:api'),
axios.get('server2:api'),
axios.get('server3:api'),
axios.get('server4:api'),
]).then(axios.spread((response1, response2, response3, response4) => {
tmp.servers = {};
tmp.servers.server1 = {};
tmp.servers.server1 = response1.data;
tmp.servers.server2 = {};
tmp.servers.server2 = response2.data;
tmp.servers.server3 = {};
tmp.servers.server3 = response3.data;
tmp.servers.server4 = {};
tmp.servers.server4 = response4.data;
toFile(JSON.stringify(tmp));
round++;
streem.end();
streem.on('finish', () => {
console.error('Round: ' + round);
});
})).catch(error => {
console.log(error);
});
}
【问题讨论】:
-
在
then语句中,您需要处理response.data不存在或response返回错误代码的情况。您是否在控制台或命令行中看到特定错误? -
当其中一台服务器没有响应时,我的控制台中什么也没有,脚本只是卡住了。
标签: javascript json node.js asynchronous axios