具有异步等待的 Foreach 和 push() 不会推送值
Foreach and push() with async await doesn't push the values
这是我的代码:
app.get("/bots/:id", async (req, res)=>{
var bot = await Bots.findOne({id: req.params.id});
if(!bot) return await res.send("not there");
bot.desc = await marked(bot.desc);
var user = req.user;
bot.owner = [];
await bot.owners.forEach(async (id)=>{
await fetch(`${process.env.DOMAIN}/api/client/users/${id}`).then(r=>r.json()).then(async d=>{
await bot.owner.push(d.tag);
});
});
await console.log(bot.owner);
await res.render('botpage.ejs', {user, bot});
})
App 是 express,fetch 是 node-fetch,我正在使用 ejs 来呈现。
当我执行 console.log(bot.owner) 时,它会记录 []
而不是我获取的 d.tag
数组。
除此以外一切都很好,包括我的 api 和 ejs 页面。
process.env.DOMAIN
= https://discord.rovelstars.com
foreach 循环不等待。使用 for 循环而不是 foreach。
for(int i=0;i<bot.owners.length();i++){
....your task
}
或
for(var obj of bot.owners){
...your task
}
访问了解更多详情
这是我的代码:
app.get("/bots/:id", async (req, res)=>{
var bot = await Bots.findOne({id: req.params.id});
if(!bot) return await res.send("not there");
bot.desc = await marked(bot.desc);
var user = req.user;
bot.owner = [];
await bot.owners.forEach(async (id)=>{
await fetch(`${process.env.DOMAIN}/api/client/users/${id}`).then(r=>r.json()).then(async d=>{
await bot.owner.push(d.tag);
});
});
await console.log(bot.owner);
await res.render('botpage.ejs', {user, bot});
})
App 是 express,fetch 是 node-fetch,我正在使用 ejs 来呈现。
当我执行 console.log(bot.owner) 时,它会记录 []
而不是我获取的 d.tag
数组。
除此以外一切都很好,包括我的 api 和 ejs 页面。
process.env.DOMAIN
= https://discord.rovelstars.com
foreach 循环不等待。使用 for 循环而不是 foreach。
for(int i=0;i<bot.owners.length();i++){
....your task
}
或
for(var obj of bot.owners){
...your task
}
访问