javascript - 等待 foreach 任务完成以继续
问题描述
嘿,我希望我的机器人在 foreach 完成持续时间后发送一条消息
代码:
let beforecheck = new Date();
bot.guilds.forEach(guild => {
//my foreach code
}).then(() => {
let aftercheck = new Date();
var finished = new Discord.RichEmbed()
.setDescription("✔ Finished ✔")
.addField(" Bot Latency", bot.ping + " ms")
.addField("expected time", expectedtime + " minute(s)")
.addField("final time", (60000 / (beforecheck - aftercheck)) + " minute(s)")
message.channel.send(finished)
})
感谢您的任何回复
解决方案
从您的代码看来,您似乎希望sforEach
花费大量时间,并且从您正在迭代guild
s 的事实来看,我希望这涉及某种异步 Discord API 调用。如果这两个都是真的,forEach
那么这个工作的工具是错误的。
如果订单很重要:(在一个async function
)
let beforecheck = new Date();
for(const guild of bot.guilds) { //might need bot.guilds.array()
//use await on asynchronous calls
}
let aftercheck = new Date();
var finished = new Discord.RichEmbed()
.setDescription("✔ Finished ✔")
.addField(" Bot Latency", bot.ping + " ms")
.addField("expected time", expectedtime + " minute(s)")
.addField("final time", (60000 / (beforecheck - aftercheck)) + " minute(s)")
message.channel.send(finished)
如果顺序无关紧要:
let beforecheck = new Date();
await Promise.all(bot.guilds.map(guild => {
//return a promise or use async/await here
}); //can also use .then() here but async/await is better
let aftercheck = new Date();
var finished = new Discord.RichEmbed()
.setDescription("✔ Finished ✔")
.addField(" Bot Latency", bot.ping + " ms")
.addField("expected time", expectedtime + " minute(s)")
.addField("final time", (60000 / (beforecheck - aftercheck)) + " minute(s)")
message.channel.send(finished)
推荐阅读
- python - Django 查询集按字段排序
- php - 将静态值添加到保存在 Laravel 数据库中的数组中
- selenium-webdriver - 带有记事本“alt + f”的winium在python代码中不起作用
- java - 在不使用 Gradle/Maven 的情况下创建 Java REST 应用程序 JAR?
- python - ModuleNotFoundError:没有名为“sklearn.linear_model._logistic”的模块
- node.js - 使用 FS 和 Discord.JS 刷新数据库
- recursion - 使用重新格式化的名称重命名目录名称,bash/cli
- reactjs - TypeScript React Js,类型'void'不可分配给类型'((事件:MouseEvent
) => 无效) | 不明确的' - python - Python MySQL:特殊转义字符导致插入错误
- postgresql - macOS 自带的 OpenSSL 包的头文件和库在哪里?