Skip to content

Instantly share code, notes, and snippets.

@andris9
Created November 11, 2019 20:08
Show Gist options
  • Save andris9/ae3cc47eac12f8352909aa3ba7511010 to your computer and use it in GitHub Desktop.
Save andris9/ae3cc47eac12f8352909aa3ba7511010 to your computer and use it in GitHub Desktop.
const dns = require('dns');
// how many parallel "workers" to use
let batchSize = 3;
// domain list to process
let domains = [
'neti.ee',
'hot.ee',
'zone.ee',
'telia.ee',
'delfi.ee',
'postimees.ee',
'nali.ee'
];
// function that is called once all domains have been processed
let resolved = () => {
console.log('Kõik valmis');
};
// counter to see how many domains are currently pending resolve
let resolvePending = 0;
// "worker" function to resolve single domain name
let resolve = () => {
if (!domains.length) {
if (!resolvePending) {
// all processed
resolved();
}
// some requests still pending, ignore
return;
}
let domain = domains.shift();
resolvePending++;
dns.resolveAny(domain, (err, ret) => {
resolvePending--;
if (err) {
console.error(domain, err);
} else {
console.error(domain, ret);
}
// restart over with next domain name
resolve();
});
};
// start "workers"
for (let i = 0; i < batchSize; i++) {
resolve();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment