[英]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.