【发布时间】:2021-10-25 02:54:45
【问题描述】:
我的 for 循环无法同步运行。它为每个域返回的注册顺序发生了变化。我猜哪个答案最快的都会先带来这些记录。我哪里做错了?
const rrtypes= ["A","MX","CNAME","NS","TXT"];
var resData = [];
export const getAllRecords = async (req,res) => {
const {domain} = req.params;
for await(const rrtype of rrtypes){
dns.resolve (domain, rrtype, (err, records) => {
resData.push(rrtype+" "+records);
});
}
res.send(resData);
resData = [];
}
【问题讨论】:
-
如果要同步运行,不要使用
async/await?还有never usefor await … ofon an array! -
您的意思是要按顺序运行循环吗?然后你需要promisify
dns.resolve调用,await那个。 -
还要在你的函数声明中移动
var resData = [];,否则数组将在多个调用之间共享。
标签: javascript node.js for-loop asynchronous async-await