Это из-за того, что вы поставили lookupAgain()
до того, как dns.resolve
закончится.Только что изменил позицию lookupAgain()
.
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',
'google.com',
'yahoo.com',
'ask.com',
'cnn.com',
'real.com'
];
// Push each domain name into the dnsQueue
uniqueDomains.forEach(function(domain) {
dnsQueue.push(domain);
});
Я проверил, что все работает нормально.