小编All*_*ter的帖子

node.js 是否允许在没有任何等待/预期履行的情况下运行承诺?

我喜欢浏览 Discord 标签并尽可能解决问题。我在 Python 方面相当流利,但在 Javascript 方面只能通过,但有时我确实把我的帽子扔到了戒指上。
Discord.py 库有许多必须等待的功能。否则将无法运行。
Discord.js 库为不同的事情返回了许多承诺,当我在写涉及这些的答案时,我很自然地添加了 await。我还查找了一个教程,以了解在 Discord.js 中编写 async/await 的最佳实践。
此外,添加 await 要求我使我的事件处理程序异步,这不合理地强化了我的信念,这些 await 语句需要存在。

client.on('message', async message => {
   await message.member.edit({mute: true})
});
Run Code Online (Sandbox Code Playgroud)

这一切都很好,而且我愚蠢地开始建议其他人也这样做。然而,在阅读问题和写答案时,我偶然发现了一些令我困惑的事情。

client.on('message', message => {
        let memberArray = [message.member];
        memberArray.forEach(member => member.edit({mute: true}));
        console.log("Do something after promised mute");
});
Run Code Online (Sandbox Code Playgroud)

这段代码没有异步函数也没有等待的承诺,仍然可以运行。这对我来说似乎很奇怪(如果代码可以执行,看起来是同步的,没有它,等待有什么意义?)。

继续混淆连续,我可以使这个函数异步并且仍然运行它而无需等待承诺。唯一会导致错误的是同步函数中的 await 语句。

另一种可能性是这不安全的并且会在生产中引起问题,但是由于我的测试机器人一次只与一个用户(我)交互,我看不到问题。Node.js 是否只是让我在没有警告的情况下运行糟糕的代码?我是否过度思考/过度设计了一个非问题?飞机餐是怎么回事?

javascript node.js promise async-await discord.js

0
推荐指数
1
解决办法
45
查看次数

标签 统计

async-await ×1

discord.js ×1

javascript ×1

node.js ×1

promise ×1