javascript - 限制await dns反向函数js的执行时间
问题描述
我有一个函数 A 执行 dns.reverse(ip) (使用 'dns' js npm)来检查是否使用了 IP。如果它抛出一个错误,它是免费的。大多数 IP 都按预期工作,因为它会立即抛出错误,但问题是某些 IP 没有,它会等待 1.2 分钟超时。
var dns = require('dns')
async function A(ip){
try{
var host = await dns.reverse(ip)
if (host.length >1) //its used
}catch(e){
// free ip if dns.reverse failed
}
}
有没有办法让我将 await dns.reverse(ip) 的执行时间限制为 5 秒,所以它不会等待整个 1.20 分钟,如果查找时间超过 5 秒就会抛出错误?谢谢!
解决方案
You can use Promise.race()
like this:
const dns = require('dns');
const timeout = (delay, message) => new Promise((_, reject) => setTimeout(reject, delay, message));
const delay = 5000;
async function A(ip) {
try {
const host = await Promise.race([dns.reverse(ip), timeout(delay, `DNS resolution timed out after ${delay} ms`)]);
console.log(host);
} catch (e) {
console.error(e);
}
}
推荐阅读
- mysql - 总和值的总和值
- java - 如何使用 spring boot 和 aspect 记录请求正文
- php - 如何将 if/else if 转换为循环
- database - 可以拆分数据库中的值和参数吗
- android - 如何从多个活动中调用单个服务?
- facebook - 批准 Facebook 上的应用程序需要多长时间?
- angular - 访问 json 中的数组对象以在 Angular 5 中显示下拉值
- visio - 向现有组添加形状会在 MS visio 中引发异常
- colors - lstlisting 代码是蓝色而不是黑色 - 关键字样式接管?
- php - 使用 PHP 从 JSON 数组中获取值