【发布时间】:2016-06-30 06:52:03
【问题描述】:
下面是我的代码。我用它的索引初始化每个数组元素。然后我使用async.each 遍历数组并调用以检索 url 内容。
请求超时设置为 500 毫秒。
var async = require('async');
var request = require('request');
var logger = require('log4js').getLogger();
var url = "http://www.wordpress.com";
var arr=new Array(100);
for ( var i=0; i<arr.length; i++){ arr[i]=i; }
async.each(arr, function(a, cb) {
var ts1 = (new Date()).getTime();
request(url, {timeout: 500}, function( err, res, body ) {
var ts2 = (new Date()).getTime();
logger.debug(`a=${a}, dt=${ts2-ts1}`);
if ( err ) {
logger.debug(`Error: ${err}, dt=${ts2-ts1}`);
return cb(null);
}
else {
//logger.debug(`OK: ${a}`);
cb(null);
}
});
},
function( err, result) {
});
当数组大小为 100 时,我得到 12 个超时错误:
[root@njs testreq]# node main.js | grep ETIME | wc -l
12
[root@njs testreq]#
当数组大小为 1000 时,我得到 1000 个超时错误:
[root@njs testreq]# node main.js | grep ETIME | wc -l
1000
[root@njs testreq]#
原因是什么?我怎样才能避免它?
【问题讨论】:
标签: node.js asynchronous request timeout