gpt4 book ai didi

javascript - NodeJS 等到函数完成

转载 作者:搜寻专家 更新时间:2023-10-31 23:40:15 25 4
gpt4 key购买 nike

我有一个应用程序,其中有一个 Client 类,当我在 discord 上收到消息时,需要为每个用户执行不同的配置(这是一个聊天应用程序,有自己的 API 调用检查新消息等)。每当我收到一 strip 有该用户新配置的新消息时,我都会初始化 obj 构造函数,但问题是当我同时收到多条消息时,只有最新的用户配置用于创建的所有客户端对象。附上应用程序的示例代码:

等待消息代码:

const app = require("./Client")
const app2 = require("./MyObject")

bot.on('message', async (message) => {

let msg = message.content.toUpperCase(), pg;
let client = await new app2.MyObject();

//set all such configurations
config.a = "valuea";

// initialize my
pg = await new app.Client(config, client);

let result = await pg.Main(bot, message, params).then((result) => {
// Do stuff with result here
});
});

客户端类:

class Client {

constructor(config, client) {
this.config = config;
this.client = client;
}

async Main(bot, message, params) {
let result = {};
this.client.setProperty1("prop");
await this.client.doSOmething();
result = await this.doSOmethingMore(message);
this.client.doCleanUp();
return result;
}
}

我也曾尝试在 Client 类中初始化 obj 构造函数,但由于某种原因甚至失败了。

关于如何更正我的代码有什么建议吗?

最佳答案

您不需要同时使用 .thenawait

bot.on('message', async (message) => {

let msg = message.content.toUpperCase();
let client = await new MyObject();

//set all such configurations
config.a = "valuea";

// initialize my
pg = new app.Client(config, client);

let result = await pg.Main(bot, message, params);
// Do stuff with result here
console.log(result);
});

(您不需要在构造函数调用时使用 await,因为它不是异步方法)

注意:async-await 将在高于 7.6 的 Node 上运行

如果你想使用.then:

bot.on('message', (message) => {
let msg = message.content.toUpperCase();
new MyObject().then(client => {
//set all such configurations
config.a = "valuea";

// initialize my
pg = new app.Client(config, client);

pg.Main(bot, message, params).then(result => {
// Do stuff with result here
console.log(result);
});
});
});

关于javascript - NodeJS 等到函数完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48525063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com