簡體   English   中英

Discord.js 異步和等待問題

[英]Discord.js Issue with async and await

我正在更改我的代碼以包含異步和等待

module.exports = {
    name: 'claim',
    description: 'claiming an order',
    args: 'true',
    usage: '<order id>',
    aliases: ['ao'],
    examples: 'claim a12',
    employeeOnly: 'true',
    async execute(message, prefix) {
        const args = message.content.slice(prefix.length).trim().split(/ +/g);

        let ticketID = args[1];
                
        await fsn.readJSON("./orders.json").then((orderDB) => {
                    
            const order = orderDB[ticketID];
            
            let orderclaimed = await db.get(`User${message.author.id}.orderclaimed`)
            
            if(orderclaimed !== null) return message.reply(`You already have claimed an order before! deliver it first! ID: ${orderclaimed}`)
          
            if(order === undefined) {
              message.reply(`Couldn't find order \`${args[1]}\` Try again.`);

            return;
            }
 // rest of code

但在線

let orderclaimed = await db.get(`User${message.author.id}.orderclaimed`)

我收到這個錯誤

await db.set(`User${message.author.id}.orderclaimed`, ticketID)
                ^^^^^

SyntaxError: await is only valid in async function

但是我在執行 function 中包含了異步,我需要在哪里包含它?

您在使用 .then .then(...)回調時輸入了新的 scope,現在必須使 function async

module.exports = {
    name: 'claim',
    description: 'claiming an order',
    args: 'true',
    usage: '<order id>',
    aliases: ['ao'],
    examples: 'claim a12',
    employeeOnly: 'true',
    async execute(message, prefix) {
        const args = message.content.slice(prefix.length).trim().split(/ +/g);

        let ticketID = args[1];
                
        // Make this async aswell
        await fsn.readJSON("./orders.json").then(async orderDB => {
                    
            const order = orderDB[ticketID];
            
            let orderclaimed = await db.get(`User${message.author.id}.orderclaimed`)
            
            if(orderclaimed !== null) return message.reply(`You already have claimed an order before! deliver it first! ID: ${orderclaimed}`)
          
            if(order === undefined) {
              message.reply(`Couldn't find order \`${args[1]}\` Try again.`);

            return;
            }

您也可以await readJSON(...)的結果,以使代碼都屬於同一個 scope。

const orderDB = await fsn.readJSON("./orders.json")
// Rest of your code

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM