我正在建立一个小型网络聊天。我用于聊天的服务要求我在前端创建一个客户端-然后可以使用该客户端进行通信。代码如下:
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()
现在,我们可以在任何需要的地方使用该客户端,但是对我来说这很奇怪。
您知道如何处理此类问题吗?
答案 0 :(得分:2)
您要在哪里致电connect
?如果导入模块应该调用它,则只需return
从该函数的客户端开始,如果导出模块应该启动连接本身(如第二个片段中所示),则应该导出一个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()
无论如何,导入该模块的模块将需要等待初始化承诺。