【问题标题】:Meteor defer - effect on reactivity流星延迟 - 对反应性的影响
【发布时间】:2017-03-10 06:19:28
【问题描述】:

我在autorun 中有一个Meteor.defer

this.autorun(() => {
  Meteor.defer(() => {
    functionThatUsesASessionVariable();
  });
});

当 Session 变量改变时,这个自动运行不会重新执行。

删除defer,它确实会在 Session 变量更改时重新执行。

this.autorun(() => {
  functionThatUsesASessionVariable();
});

但我确实想要延迟行为和反应性。有没有办法两者兼得?

====

(现在我最好的做法是在autorun 的开头放一个Session.get('sessionVar'),没有分配任何东西,只是为了触发反应。)

this.autorun(() => {
  Session.get('sessionVar');
  Meteor.defer(() => {
    functionThatUsesASessionVariable();
  });
});

(但这显然不是很好,因为如果反应直接来自函数的依赖关系会更好,它会随着时间而改变)

【问题讨论】:

    标签: javascript asynchronous meteor


    【解决方案1】:

    试试

    this.autorun(() => {
      if (Session.get('yourVar') ){
        Meteor.defer(() => {
          functionThatUsesASessionVariable();
        });
      }
    });
    

    否则自动运行可能不会注册对 Session 变量的依赖。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-29
      • 2019-06-07
      • 1970-01-01
      • 2022-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多