【发布时间】:2020-05-09 01:59:26
【问题描述】:
我有一个快速端点,它可以做很多事情,其中之一是根据 GoDaddy 的 API 检查域名可用性。我不明白如何才能等待结果。
循环将迭代我的tlds 数组并检查每个人的域名可用性。目前axios会从checkDomainAvailability返回一个promise,解析,并将数据推送到domains数组中(我敢肯定这可以写得更好,但我不精通JS)。
app.post("/domains", async (req, res) => {
var brand = req.body.brand;
let domains = [];
// check domain availability
const tlds = ["dev", "com", "tv", "io", "app", "me"];
tlds.forEach(tld => {
let domain = `${brand}.${tld}`;
godaddy.checkDomainAvailability(domain).then(data => {
domains.push(data);
});
});
res.send(domains);
}
godaddy.checkDomainAvailability()
const checkDomainAvailability = function(domain) {
return api
.get("/domains/available", {
params: {
domain: domain,
checkType: "FULL",
forTransfer: false
}
})
.then(res => {
return res.data;
})
.catch(err => {
logger.error("Godaddy", err);
});
};
当前的结果显然是 express 在每个迭代之前发送域的结果。我怎样才能让它等待 forEach 循环?
我尝试如下使用for await,但看到了相同的结果。
// check domain availability
const tlds = ["dev", "com", "tv", "io", "app", "me"];
for await (let tld of tlds) {
let domain = `${brand}.${tld}`;
godaddy.checkDomainAvailability(domain).then(data => {
domains.push(data);
});
}
【问题讨论】:
-
看看这个问题和答案,我认为它会帮助你指出正确的方向。 stackoverflow.com/questions/31413749/…
-
@user1538301 我确实用
for await尝试过这个,但仍然看到相同的结果。我会尝试编辑。
标签: javascript node.js express