【问题标题】:MeteorJS connection delay issuesMeteorJS 连接延迟问题
【发布时间】:2017-09-23 05:05:37
【问题描述】:

我对 MeteorJS 完全陌生,只是看演示并四处寻找。我可能只是错过了一些非常基本的东西。 我正在使用带有 angular-ui-router 的流星。如果我从将数据加载到控制器的状态开始,我会遇到问题,因为 DDP 尚未初始化。这与Meteor: How can I tell when the database is ready?中描述的类似

路由配置的相关部分:

        resolve: {
            location: ($stateParams) => {
                console.log('find', $stateParams);

                let handle = setInterval(function () {
                    console.log(Meteor.status().connected, Meteor.status().status);
                    console.log( !!Locations.findOne({code: $stateParams.code}) ? 'found' : 'not found' );
                }, 100);

                setTimeout(function () {
                    clearInterval(handle);
                }, 2000);

                console.log(Meteor.status().connected, Meteor.status().status);
                return Locations.findOne({code: $stateParams.code});
            }
        }

输出是

false "connecting"
false "connecting"
not found
true "connected"
not found
true "connected"
not found
true "connected"
found
true "connected"
found

我的问题是: 我是否正确理解这里的问题是,要使事情按预期工作,它们必须按以下顺序发生:

  1. 网络套接字连接已启动
  2. 网络套接字连接已准备就绪
  3. minimongo 已刷新
  4. collection.findOne

和 4. 在 3 之前运行? 如果是,建议的解决方法是什么?

转帖:https://github.com/meteor/meteor/issues/9127

【问题讨论】:

    标签: javascript meteor angular-ui-router


    【解决方案1】:

    每当您在 Meteor 中订阅时,您都应该在呈现结果之前检查订阅是否准备就绪。通常,您会在未显示微调器时显示它。

    const mySub = Meteor.subscribe('somePublication');
    if (mySub.isReady()) {
      ... you can access the data using minimongo
    } else {
      ... not so fast Jack
    }
    

    DDP 的 websocket 连接需要在 pub-sub 传输数据之前建立,但在大多数情况下,这并不是一个非常重要的延迟来源。

    您可以在 Tracker.autorun() 中发布准备就绪时捕获该事件:

    const mySub = Meteor.subscribe('somePublication');
    
    Tracker.autorun(() => {
      if (mySub.ready()) ... do something
    });
    

    或者在订阅的回调中:

    Meteor.subscribe('somePublication',() => {
      ... subscription is ready
    });
    

    【讨论】:

    • 你似乎含蓄地确认了我的要求,但你能明确地做到吗?是否有执行相同操作的异步方法,例如mySub.onReady(回调)?
    猜你喜欢
    • 2012-01-24
    • 2018-08-22
    • 1970-01-01
    • 2019-08-30
    • 2011-01-14
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多