首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >react本机中的Connexion对象单例

react本机中的Connexion对象单例
EN

Stack Overflow用户
提问于 2019-04-11 05:05:23
回答 1查看 269关注 0票数 1

我尝试创建一个单例服务类,在其中实例化一个连接到后端的connection对象,以便在每个组件中重用connection对象,所以我已经做到了:

代码语言:javascript
复制
const {
Kuzzle,
WebSocket
 } = require('kuzzle-sdk');

class KuzzleService {

static instance = null;
static async createInstance() {
    var object = new KuzzleService();
    object.kuzzle = new Kuzzle(
        new WebSocket('localhost'),{defaultIndex: 'index'}
    );
    await object.kuzzle.connect();
    const credentials = { username: 'user', password: 'pass' };
    const jwt = await object.kuzzle.auth.login('local', credentials);
    return object;
}

static async getInstance () {
    if (!KuzzleService.instance) {
        KuzzleService.instance = await KuzzleService.createInstance();
    }
    return KuzzleService.instance;
}

}
const kuzzleService = KuzzleService.getInstance();
export default kuzzleService;

但是当我在组件中导入服务时,如下所示:

代码语言:javascript
复制
import kuzzleService from "../services/kuzzle-service.js";

然后我打印出来:

代码语言:javascript
复制
 async componentDidMount(){
    console.log(JSON.stringify(kuzzleService.kuzzle));
 }

它给了我“未定义的”。我应该以另一种方式导入服务吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-11 16:12:12

这可能是因为在导出kuzzleService时,.getInstance()给出的承诺还没有得到解决。

您应该导出.getInstance函数并在componentDidMount中等待它,如下所示:

代码语言:javascript
复制
export default KuzzleService; // export the singleton directly
代码语言:javascript
复制
async componentDidMount(){
    const kuzzle = await KuzzleService.getInstance();
    console.log(kuzzle);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55621314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档