Esta noticia fue probado por nuestros expertos para que tengas la garantía de la exactitud de nuestra esta noticia.
Solución:
No estoy seguro de ninguna forma de establecer un tiempo de espera directamente en la llamada de función, pero podría crear un pequeño envoltorio alrededor de la llamada para manejar el tiempo de espera usted mismo:
var dns = require('dns');
var nsLookup = function(domain, timeout, callback)
var callbackCalled = false;
var doCallback = function(err, domains)
if (callbackCalled) return;
callbackCalled = true;
callback(err, domains);
;
setTimeout(function()
doCallback(new Error("Timeout exceeded"), null);
, timeout);
dns.resolveNs(domain, doCallback);
;
nsLookup('stackoverflow.com', 1000, function(err, addresses)
console.log("Results for stackoverflow.com, timeout 1000:");
if (err)
console.log("Err: " + err);
return;
console.log(addresses);
);
nsLookup('stackoverflow.com', 1, function(err, addresses)
console.log("Results for stackoverflow.com, timeout 1:");
if (err)
console.log("Err: " + err);
return;
console.log(addresses);
);
La salida para el script anterior:
Results for stackoverflow.com, timeout 1:
Err: Error: Timeout exceeded
Results for stackoverflow.com, timeout 1000:
[ 'ns1.serverfault.com',
'ns2.serverfault.com',
'ns3.serverfault.com' ]
Nodo.js dns.resolve*
use la biblioteca c-ares debajo, que admite tiempos de espera y varias otras opciones de forma nativa. Desafortunadamente, Node.js no expone esos parámetros ajustables, pero algunos de ellos se pueden configurar a través de RES_OPTIONS
Variable ambiental.
Ejemplo: RES_OPTIONS='ndots:3 retrans:1000 retry:3 rotate' node server.js
ndots
: igual que ARES_OPT_NDOTSretrans
: igual que ARES_OPT_TIMEOUTMSretry
: igual que ARES_OPT_TRIESrotate
: igual que ARES_OPT_ROTATE
Consulte man ares_init_options(3) para obtener detalles sobre el significado de cada opción, por ejemplo, aquí http://manpages.ubuntu.com/manpages/zesty/man3/ares_init_options.3.html
Si para ti ha sido provechoso este post, te agradeceríamos que lo compartas con el resto programadores de esta manera nos ayudas a extender nuestro contenido.