订单不和谐 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());
即使有一个可接受的答案,我也会在这里留下这个答案,希望其他人会觉得它有用。
我想添加带有反应的消息,但我希望反应具有一定的顺序。问题是当我执行命令添加该消息时,反应随机添加。
代码:
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());
即使有一个可接受的答案,我也会在这里留下这个答案,希望其他人会觉得它有用。