不等待带有异步过滤器的 await message.awaitReaction
Posted
技术标签:
【中文标题】不等待带有异步过滤器的 await message.awaitReaction【英文标题】:await message.awaitReaction with an async filter isn't awaited 【发布时间】:2019-09-17 11:52:31 【问题描述】:为什么我的控制台在“开始”之前记录“完成”? 为什么我不能等待 message.awaitReactions(); ?
const filter = async /*It is here for no reason but without it does not work neither*/ (reaction, user) =>
if (user.id == players[p].user.id && aEmojis.indexOf(reaction.emoji.name) != -1)
console.log("Started");
attackedIndex = aEmojis[aEmojis.indexOf(reaction.emoji.name)+1];
message.delete();
return true;
return false;
;
await message.awaitReactions(filter, max: 1);
console.log("Finished");
【问题讨论】:
你的 awaitReactions 必须返回一个承诺。过滤器的异步没有意义。async
函数中没有 await
== 代码异味。
我也试过没有等待
【参考方案1】:
await
在异步函数中工作
(async function()
const filter = async (reaction, user) =>
if (user.id == players[p].user.id && aEmojis.indexOf(reaction.emoji.name) != -1)
console.log("Started");
attackedIndex = aEmojis[aEmojis.indexOf(reaction.emoji.name)+1];
message.delete();
return true;
return false;
;
await message.awaitReactions(filter, max: 1);
console.log("Finished");
)();
【讨论】:
感谢您的帮助,我现在尝试了它仍然无法正常工作,我将继续调查看起来我的情况很奇怪以上是关于不等待带有异步过滤器的 await message.awaitReaction的主要内容,如果未能解决你的问题,请参考以下文章