Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 站点关闭时如何处理http调用错误_Javascript_Node.js_Asynchronous_Error Handling_Http Get - Fatal编程技术网

Javascript 站点关闭时如何处理http调用错误

Javascript 站点关闭时如何处理http调用错误,javascript,node.js,asynchronous,error-handling,http-get,Javascript,Node.js,Asynchronous,Error Handling,Http Get,我想用一些通用的错误处理代码来替换if(body.toString().indexOf(“404”)!==0)块,但我似乎看不出当目标主机停机时它在哪里抛出错误。到目前为止,这是我唯一一个成功的黑客方法 app.get('/', function(req, res){ var sites = ["foo.com", "bar.com"]; var returnObj = []; var index = 0; getSites(index); // Rec

我想用一些通用的错误处理代码来替换if(body.toString().indexOf(“404”)!==0)块,但我似乎看不出当目标主机停机时它在哪里抛出错误。到目前为止,这是我唯一一个成功的黑客方法

app.get('/', function(req, res){
    var sites = ["foo.com", "bar.com"];
    var returnObj = [];
    var index = 0;
    getSites(index);

    // Recursively add data from each site listed in "sites" array
    function getSites(index) {
        if(index < sites.length) {
            var url = sites[index];
            var _req = http.get({host: url}, function(_res) {
              var bodyChunks = [];
              _res.on('data', function(chunk) {
                bodyChunks.push(chunk);
              }).on('end', function() {
                var body = Buffer.concat(bodyChunks);
                if(body.toString().indexOf("404") !== 0) {
                    returnObj.push(JSON.parse(body));
                }    
                getSites(++index);
              });
            });

            _req.on('error', function(e) {
              console.log('ERROR: ' + e.message);
            });
        } else {
            res.json(returnObj);
            res.end();
        }
    }
});
app.get('/',函数(req,res){
var站点=[“foo.com”,“bar.com”];
var returnObj=[];
var指数=0;
获取站点(索引);
//递归地从“站点”数组中列出的每个站点添加数据
函数getSites(索引){
if(索引<站点长度){
var url=站点[索引];
var_req=http.get({host:url},函数(_res){
var bodyChunks=[];
_res.on('data',函数(块){
推(块);
}).on('end',function(){
var body=Buffer.concat(bodyChunks);
if(body.toString().indexOf(“404”)!=0){
push(JSON.parse(body));
}    
getSites(++索引);
});
});
_请求开启('错误',功能(e){
console.log('错误:'+e.message);
});
}否则{
res.json(returnObj);
res.end();
}
}
});

您可以检查响应的状态代码

if(_req.statusCode === 200) {
    //Response okay.
}
状态代码的列表