如何处理axios.all请求失败

时间:2018-05-11 17:13:21

标签: javascript json node.js asynchronous axios

在此axios.all请求示例中,如何处理请求失败。即如果所有服务器都使用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);
    });
}

0 个答案:

没有答案
相关问题