【问题标题】:meteor.js - onReady callback for multiple subscriptionsmeteor.js - 多个订阅的 onReady 回调
【发布时间】:2013-11-15 11:42:35
【问题描述】:

在我的应用程序可以正常运行之前,我需要获得来自多个订阅的完整数据。在 jQuery/Backbone.js 上下文中,我会做这样的事情:

var sub1 = Meteor.subscribe('foo'),
sub2 = Meteor.subscribe('bar');
$.when(sub1, sub2, function(){
    // do things
});

但我认为这不是 Meteor 方式...(?)我可以做这样的事情

Meteor.subscribe('foo', function(){
    Meteor.subscribe('bar', function(){
        // do things
    });
});

但这很快就会变得一团糟。可能有某种帮助/模式可以做到这一点,我只是不知道......

注意 - 我正在使用出色的 Iron-router,并且也尝试过:

this.route('baz', {
    // code ...
    'before' : [
        function(){
            this.subscribe('foo').wait();
        },
        function(){
            this.subscribe('bar').wait();
        }
     ],
     // more code ..
 });

但这似乎并不能阻止下游代码运行,因此并不能解决我的问题...

【问题讨论】:

  • 这个问题启发了我研究 Iron-router,我同意它非常出色。我对它的了解并不比通过观看 18 分钟的更新视频所了解的更多,但是您是否尝试过“waitOn”功能?
  • 作者在文档中说“在订阅句柄上调用等待实际上并不会阻止任何事情。它只是将订阅句柄添加到我们正在响应等待的句柄列表中。”我实际上确实希望它阻止下游代码,直到这些订阅被清除

标签: meteor iron-router


【解决方案1】:

原来旧方法行不通。这个虽然。我在http://sa.gy 将它用于我的回调箱@

this.route('baz', {
    before: function(){
        this.subscribe('foo').wait();
        this.subscribe('bar').wait();
    }
});

【讨论】:

  • 如果我这样做,然后在“数据”中调用 Bar.find(),我经常得到“未定义”...,即使 Bar 已在服务器上发布并包含文档
  • Tarang,希望我能给出更多的 +1,你是我最后几个流星问题的唯一答案!
  • 这是 Iron-router Github 页面github.com/EventedMind/iron-router/issues/265987654322@ 上的一个当前未解决问题
  • 这曾经在几周前工作过,我不确定发生了什么。试试这个,它对我有用(更新了我的答案)
猜你喜欢
  • 2015-03-28
  • 2014-07-29
  • 1970-01-01
  • 1970-01-01
  • 2015-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多