流星在Tracker中陷入无限循环

时间:2016-01-20 15:38:51

标签: meteor

这是来自之前提交的更多信息,但我认为如果我单独发布此信息会更清楚。

帮助程序正在返回集合查询:

Template.clientGrid.helpers({
  'programs': function () {
  var fullNameP = Session.get('clientName');
  return Programs.find({FullName: fullNameP});
  }
});

在模板中,它会从'程序'中打印出属性。例如:

...
{{#each programs}}
  <p>{{formatCampYear CampYear}}: {{formatNotes Notes}}</p>
{{/each}}
....

没什么特别的。因此,如果FullName是Jane Doe,并且她在程序集合中有6个文档,它将在模板中打印六个属性。但是,在完成打印属性后,页面会在Tracker内的while循环中被捕获(参见第449行while循环&#39;重新计算所有待定计算&#39;)。 CPU被束缚并阻止某些页面操作。如果你们中的任何一个更加核心的家伙和女孩对这意味着什么有任何线索,也许我可以解决这个问题。这里是while循环本身的副本(只是孤立地):

// recompute all pending computations
  while (pendingComputations.length) {
    var comp = pendingComputations.shift();
    comp._recompute();
    if (comp._needsRecompute()) {
      pendingComputations.unshift(comp);
    }

    if (! options.finishSynchronously && ++recomputedCount > 1000) {
      finishedTry = true;
      return;
    }
  }

编辑:这是设置会话的事件地图。似乎没有任何可疑之处。由于我是预生产的,因此我没有对该集合进行任何更新。在这一点上,它几乎只是静态的。

Template.clientSearchButton.events({
  'click #client-search-button': function(event) {
  event.preventDefault();
  var clientFullName = document.getElementById('full-name').value.toUpperCase();
  Session.set('clientName', clientFullName);
  mapAddress = Demographic.find({ "FullName": clientFullName }).map(function (a) { return (a.Address + " " + a.City + " " + a.State + " " + a.Country); });
  Meteor.myFunctions.initialize();
  }
});

0 个答案:

没有答案