我正在将很多域名添加到async.queue(https://github.com/caolan/async)中,然后进行dns查找。由于某些原因,来自async库的drain事件过早地被调用,要么是在队列的开头,要么是很快之后。我想知道队列真正完成时的时间,以便使用结果。
如果有人可以推荐另一个库或方法来排队作业,我就不需要使用这个async库, 我只是想让它正常工作。
如果有人可以推荐另一个库或方法来排队作业,我就不需要使用这个async库, 我只是想让它正常工作。
const dns = require('dns');
const async = require('async');
const MaxConcurrent = 2; // only do x DNS lookups at one time
const MaxWait = 1000; // wait for a second before dns timeout
var dnsQueue = async.queue(function(domain, lookupAgain) {
setTimeout(
function() {
dns.resolve(domain, function (err, address)
{
console.log('domain: ' + domain + " address: " + address)
});
lookupAgain();
}, MaxWait);
}, MaxConcurrent);
// This should run when the queue is finished
dnsQueue.drain = function() {
console.log('done??');
}
// Array of domain names
var uniqueDomains = [
'google.com',
'yahoo.com',
'ask.com',
'cnn.com',
'real.com'
];
// Push each domain name into the dnsQueue
uniqueDomains.forEach(function(domain) {
dnsQueue.push(domain);
});