Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 连接延迟问题_Javascript_Meteor_Angular Ui Router - Fatal编程技术网

Javascript 连接延迟问题

Javascript 连接延迟问题,javascript,meteor,angular-ui-router,Javascript,Meteor,Angular Ui Router,我对MeteorJS完全陌生,只是看看演示和四处闲逛。我可能只是错过了一些基本的东西。 我正在使用meteor和angular ui路由器。如果我从将数据加载到控制器的状态开始,就会遇到问题,因为DDP尚未初始化。这与中描述的类似 路由配置的相关部分: resolve: { location: ($stateParams) => { console.log('find', $stateParams);

我对MeteorJS完全陌生,只是看看演示和四处闲逛。我可能只是错过了一些基本的东西。 我正在使用meteor和angular ui路由器。如果我从将数据加载到控制器的状态开始,就会遇到问题,因为DDP尚未初始化。这与中描述的类似

路由配置的相关部分:

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

  • 已启动web套接字连接
  • web套接字连接已准备好使用
  • minimongo已刷新
  • 收藏,芬顿
  • 四,。你在3点之前跑步吗? 如果是,建议的解决方法是什么

    交叉发布:

    无论何时在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()
    中捕获出版物准备就绪时的事件:

    或在订阅的回调中:

    Meteor.subscribe('somePublication',() => {
      ... subscription is ready
    });
    
    无论何时在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()
    中捕获出版物准备就绪时的事件:

    或在订阅的回调中:

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

    你似乎暗中证实了我的要求,但你能明确地这样做吗?是否有一个异步方法也能做到这一点,例如mySub.onReady(回调)?您似乎隐式地确认了我的要求,但您能显式地这样做吗?是否有一个异步方法可以执行相同的操作,例如mySub.onReady(回调)?