订单不和谐 js 中的反应

Reaction in a order discord js

我想添加带有反应的消息,但我希望反应具有一定的顺序。问题是当我执行命令添加该消息时,反应随机添加。

代码:

        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;

我希望代码中的订单出现在反应消息中,有什么解决方案吗?

您的发送功能具体是什么 return?什么的承诺?也许在第一个回调完成之前,多个 Promise 得到解决。

您尝试使用 Promise.each() 了吗?

With Promise.each() Iteration happens serially. If the iterator function returns a promise or a thenable, then the result of the promise is awaited before continuing with next iteration.

解决了异步函数的问题

  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;

正如 OP 所述,接受的答案适用于这种特定情况,但是我只是 运行 遇到了类似的问题,但是我的 emoji:s 是生成的,所以在一行中输入它们是'没有选择。所以我自然而然地试着把它们都看一遍,并及时等待。然而,节点似乎对此很聪明,并将代码优化为 运行 并行而不是顺序。我最终不得不像这样使用 reduce 将所有承诺折叠成一个承诺:

[...array of emojis...].reduce((promise, emoji) => promise.then(() => message.react(emoji)), Promise.resolve());

即使有一个可接受的答案,我也会在这里留下这个答案,希望其他人会觉得它有用。