异步/等待 Discord.js Node.js Javascript JS
Posted
技术标签:
【中文标题】异步/等待 Discord.js Node.js Javascript JS【英文标题】:async/await Discord.js Node.js Javascript JS 【发布时间】:2021-04-25 09:26:17 【问题描述】:嘿,我希望有人能帮我解决我的问题。
以下代码应输出:
你好 世界! 再见!
但它不会等待第二行被执行。
所以输出是 你好 再见! 世界!
const Discord = require("discord.js");
const config = require("./config.json");
const client = new Discord.Client();
const prefix = "02";
client.on("message", async message =>
if (message.author.bot) return;
if (!message.content.startsWith(prefix)) return;
const commandBody = message.content.slice(prefix.length);
const args = commandBody.split(' ');
const command = args.shift().toLowerCase();
if (command === "help" || command === "h" || command === "hilfe")
console.log("Hello");
await setTimeout(() => console.log("World!"); , 2000);
console.log("Goodbye!");
);
client.login(config.BOT_TOKEN);
【问题讨论】:
await
关键字仅适用于承诺。 setTimeout
不返回承诺,因此它不会工作。
或者,您可以将所有console.log
代码放入您的setTimeout
中。看看这个问题Combination of async function + await + setTimeout
【参考方案1】:
您需要承诺setTimeout
逻辑,以便await
可以使用它。考虑这个sleep
函数实现。
function sleep(timeInMs)
return new Promise(resolve =>
setTimeout(resolve, timeInMs);
);
// usage
async message =>
// …
console.log("Hello");
await sleep(2000);
console.log("World!");
console.log("Goodbye!");
【讨论】:
谢谢帮了我很多以上是关于异步/等待 Discord.js Node.js Javascript JS的主要内容,如果未能解决你的问题,请参考以下文章
Discord.js + Node.js: SyntaxError: Unexpected token ''
如何隐藏 DiscordAPIError (discord.js) (node.js)
Node.js + Discord.js:无法读取未定义的属性“类”
node.js/discord.js:TypeError:无法读取 null 的属性“setPresence”