我怎样才能使它成为异步函数或承诺?

我正在尝试制作一个不和谐机器人。我使用 AkairoClient 作为框架,其中有一个设置前缀的选项。我有以下代码:


            // HANDLERS

        this.commandHandler = new CommandHandler(this, {


            prefix: msg => {

                let prefix;

                console.log('first')

                con.query(`SELECT * FROM info WHERE id = ${msg.guild.id}`, (err, rows) => {

                    if (!err) prefix = rows[0].prefix;

                    console.log('Second')

                

                });

                console.log('third')

                return prefix ?? '!';

            },

            blockBots: true,

/* Rest of code here ...*/

        });

当我执行此操作时,控制台打印:

  • 第一的

  • 第三

  • 第一的

  • 第三

  • 第二

  • 第二

我在理解如何使其正常工作时遇到问题,因为我希望prefix获取行的值,但在本例中prefix返回的是undefined查询完成之前的结果


杨魅力
浏览 135回答 1
1回答

慕侠2389804

我不完全确定你的模块是如何工作的,但这将是异步等待函数的正确语法:this.commandHandler = new CommandHandler(this, {    prefix: async msg => {        let prefix;        console.log('first');        const rows = await con.query(`SELECT * FROM info WHERE id = ${msg.guild.id}`).catch(console.log);        console.log('Second');        if (rows) prefix = rows[0].prefix;        console.log('third');        return prefix ?? '!';    },    blockBots: true,/* Rest of code here ...*/});
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript