【问题标题】:async/await Discord.js Node.js Javascript JS异步/等待 Discord.js Node.js Javascript JS
【发布时间】:2025-11-29 14:30:02
【问题描述】:

嘿,我希望有人能帮我解决我的问题。

以下代码应输出:

你好 世界! 再见!

但它不会等待第二行被执行。

所以输出是 你好 再见! 世界!

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);

【问题讨论】:

标签: javascript node.js async-await discord.js


【解决方案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!");
}

【讨论】:

  • 谢谢帮了我很多