Javascript Foreach循环速度太快
这是我正在使用的循环:Javascript Foreach循环速度太快,javascript,node.js,discord.js,Javascript,Node.js,Discord.js,这是我正在使用的循环: client.users.forEach(user => { if (user.presence.status == "online") { fnHistory.userUpdate(user.id, status, false, message); } }); 其中的函数调用: client.channels.get("495635013073895429").fetchMessage("495636761926434818").
client.users.forEach(user => {
if (user.presence.status == "online") {
fnHistory.userUpdate(user.id, status, false, message);
}
});
其中的函数调用:
client.channels.get("495635013073895429").fetchMessage("495636761926434818").then(message => {
message.edit(`${message.content} \n \t - ${name}`);
});
我正在尝试使用新名称附加现有邮件。但是在foreach循环之后,它只显示姓氏
foreach['foo','bar']中的2个元素就是这样处理的:
但是没有成功…这可以通过几种方式实现。但是在我们开始之前,您需要修改处理函数以返回这样的承诺
function () {
return client.channels.get("495635013073895429")
.fetchMessage("495636761926434818").then(message => {
message.edit(`${message.content} \n \t - ${name}`);
});
}
然后可以使用reduce
或编写async
函数来序列化处理
使用reduce:
client.users.reduce((previousIteration, user => {
if (user.presence.status === "online") {
return previousIteration.then(() => fnHistory.userUpdate(user.id, status, false, message));
}
return previousIteration;
}, Promise.resolve());
async function updateOnlineUsers() {
for (const user of client.users) {
if (user.presence.status === "online") {
await fnHistory.userUpdate(user.id, status, false, message));
}
}
}
使用异步函数:
client.users.reduce((previousIteration, user => {
if (user.presence.status === "online") {
return previousIteration.then(() => fnHistory.userUpdate(user.id, status, false, message));
}
return previousIteration;
}, Promise.resolve());
async function updateOnlineUsers() {
for (const user of client.users) {
if (user.presence.status === "online") {
await fnHistory.userUpdate(user.id, status, false, message));
}
}
}
返回承诺并使用
map
notforEach
@AluanHaddad是的,我看到了该解决方案,但该解决方案用于跟踪它们何时全部完成(如果我错了,请纠正我)。我想要的是在foreach的下一次迭代完成后转到下一次迭代。感谢您的帮助,我使用reduce尝试了您的方法,但它给了我这个错误上一次迭代。then不是一个函数
。到目前为止,我知道我完全复制了您给我的内容。@sjaakvbrant我更新了它以处理空数组。如果它仍然不起作用,那么您将不会返回承诺,并且需要更多有关fnHistory的信息。userUpdate