gpt4 book ai didi

JavaScript:异步创建实例并在不同模块中使用它

转载 作者:行者123 更新时间:2023-11-30 13:59:38 25 4
gpt4 key购买 nike

我正在构建一个小型网络聊天。我用于聊天的服务要求我在前端创建一个客户端 - 然后我可以使用它来进行通信。代码如下所示:

import Client from 'some-chat-service'

async function connect() {
const token = await getToken() // first need to get token from backend
const client = await Client.create(token) // then we can create client instance
}

现在,问题是我无法在其他任何地方(在不同的文件中)使用 client,因为它是在 connect 函数中声明的。

解决方法如下所示:

import Client from 'some-chat-service'

export let client;

async function connect() {
const token = await getToken()
client = await Client.create(token)
}
connect()

现在,我们可以在任何地方使用客户端,但我觉得它很奇怪。

你知道如何处理这样的问题吗?

最佳答案

您想在哪里调用connect?如果导入模块应该调用它,那么只需从函数中返回客户端,如果导出模块应该自己启动连接(就像在你的第二个片段中),那么你应该导出一个 promise :

export const clientPromise = getToken().then(Client.create);

// or with async/await:
async function connect() {
const token = await getToken()
return Client.create(token)
}
export const clientPromise = connect()

在任何情况下,导入它的模块都需要等待初始化 promise 。

关于JavaScript:异步创建实例并在不同模块中使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56565204/

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