【问题标题】:Meteor: async update subscriptionMeteor:异步更新订阅
【发布时间】:2015-07-30 06:29:58
【问题描述】:

我有一个订阅,在调用 ready() 后,它会执行一些更新,从其他集合中提取数据:

Meteor.publish('foo', function() {
  this.ready()

  // Several times:
  var extraData = OtherCollection.findOne(...)
  this.changed(..., extraData)
})

如何异步运行这些更新?每次更新都会访问数据库,进行一些计算,并在订阅上调用changed

我还需要在所有更新完成后运行代码(重新同步)。

【问题讨论】:

    标签: javascript asynchronous meteor


    【解决方案1】:

    只需保存发布处理程序并稍后使用!

    var publishHandler;
    
    Meteor.publish('foo', function() {
      publishHandler = this;
    
      //Do stuff...
    });
    
    //Later, retrieve it and do stuff with it
    doSomeAsync(Meteor.bindEnvironment(function callback(datum) {
      publishHandler.changed(/* ... */, datum);
    }));
    
    //Alternatively with Meteor.setTimeout:
    Meteor.setTimeout(function callback() {
      publishHandler.changed(/* ... */, 'someData');
    },
    10000);
    

    由于它最终只是一个 JS 对象,因此您也可以将其保存在数组中或做任何适合您的事情。
    异步。
    英勇。

    【讨论】:

      猜你喜欢
      • 2018-04-08
      • 1970-01-01
      • 2012-08-31
      • 2013-10-09
      • 1970-01-01
      • 2017-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多