我想添加一条带有反应的消息,但我希望反应有一定的顺序。问题是当我执行命令添加该消息时,反应会随机添加。
代码:
case "helptest":
indexTest = 0;
comandUser = message.author.username;
message.channel.send(mesajeTest[indexTest]).then(function (message) {
message.react("⏪")
message.react("▶")
message.react("◀")
message.react("⏩")
});
break;

我希望代码中的顺序在反应消息中,任何解决方案?
答案 0 :(得分:5)
解决了异步功能
的问题
case "helptest":
indexTest = 0;
comandUser = message.author.username;
message.channel.send(mesajeTest[indexTest]).then(async function (message) {
await message.react("⏪")
await message.react("◀")
await message.react("▶")
await message.react("⏩")
});
break;
答案 1 :(得分:0)
您的发送功能到底是什么回报?承诺什么?也许多个Promise在第一个回调完成之前得到解决。
您是否尝试使用Promise.each()?
使用 Promise.each()迭代按顺序进行。如果迭代器函数返回一个promise或一个thenable,那么在继续下一次迭代之前,等待promise的结果。
答案 2 :(得分:0)
正如OP所述,可接受的答案适用于此特定情况,但是我遇到了一个类似的问题,但是生成了我的emoji表情:因此,在行上键入它们不是一个选择。因此,我自然地尝试查看所有内容,并及时等待。但是,节点对此似乎很聪明,并优化了代码以并行而不是顺序运行。我最终不得不使用reduce将所有的承诺折叠成一个承诺:
[...array of emojis...].reduce((promise, emoji) => promise.then(() => message.react(emoji)), Promise.resolve());
即使有一个可接受的答案,我也将在此保留该答案,以希望其他人可能会有所帮助。