这是我正在使用的循环:
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个元素的方式:
我进行了很多搜索,并且已经尝试使每个函数都使用一个Promise,但是foreach对此并不在意。我也尝试使用延迟/超时。 但是没有成功...
答案 0 :(得分:1)
这可以通过多种方式来完成。但是在开始之前,您需要修改处理功能以返回promise
function () {
return client.channels.get("495635013073895429")
.fetchMessage("495636761926434818").then(message => {
message.edit(`${message.content} \n \t - ${name}`);
});
}
然后,您可以使用reduce
或编写async
函数来序列化处理。
使用减少:
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));
}
}
}