代码之家  ›  专栏  ›  技术社区  ›  Yanick Rochon

如何实现流星追踪器功能?

  •  0
  • Yanick Rochon  · 技术社区  · 7 年前

    我正在写一个模块支持流星追踪器,但我无法测试它。我补充道 meteor-standalone-tracker 作为dev依赖项,并编写了一个测试用例,但是 autorun 函数只被调用一次。

    from the docs

    import assert from 'assert';
    import Tracker from 'trackr';
    
    describe('Testing Tracker', () => {
    
      it('should do as expected', () => {
    
        var favoriteFood = "apples";
        var favoriteFoodDep = new Tracker.Dependency;
    
        var getFavoriteFood = function () {
          favoriteFoodDep.depend();
          return favoriteFood;
        };
    
        var setFavoriteFood = function (newValue) {
          favoriteFood = newValue;
          favoriteFoodDep.changed();
        };
    
        console.log("GET:" , getFavoriteFood());
        // "apples"
    
        var handle = Tracker.autorun(function () {
          console.log("Your favorite food is " + getFavoriteFood());
        });
        // "Your favorite food is apples"
    
        setFavoriteFood("mangoes");
        // "Your favorite food is mangoes"
        setFavoriteFood("peaches");
        // "Your favorite food is peaches"
        setFavoriteFood("bananas");
        // "Your favorite food is bananas"
        handle.stop();
        setFavoriteFood("cake");
        // (nothing printed)
    
      });
    
    });
    

    那个 只有 我得到的结果是:

    console.log test/tracker.spec.js:27
       GET: apples
    
    console.log test/tracker.spec.js:31
       Your favorite food is apples
    

    我错过了什么?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Yanick Rochon    7 年前

    我目前的解决方案是刷新所有的计算。

    Tracker.flush();
    

    这将迫使 autorun 具有已更改为调用的依赖项的函数。

    推荐文章