如果在每个循环的第一个方法中找到多于1个结果,我有一个保持循环的函数:
schedule: function () {
Meteor.call('getOneUser', Session.get("selectedEmployee"), function (error, mainResult) {
if (error) {
console.log(error.message);
} else if (mainResult != undefined) {
_.each(mainResult.schedule, function (schedules) {
Meteor.call('timezoneChanger', schedules.from, function (error, result) {
if (error) {
console.log(error.message);
} else {
schedules.from = result;
Meteor.call('timezoneChanger', schedules.to, function (error, result) {
if (error) {
console.log(error.message);
} else {
schedules.to = result;
Session.set('foundSchedule', mainResult.schedule);
}
});
}
});
});
}
});
console.log("a");
return Session.get('foundSchedule');
}
以下代码记录“a”无限次。但是在我的mongoDB中,我只有一个时间表集合,它只运行一次(mainResult.schedule)。
模板看起来像这样:
<template name="employee_schedule">
Schedule:<br>
{{#each schedule}}
<div>{{from}} - {{to}}</div>
{{/each}}
</template>
答案 0 :(得分:0)
可能的问题是反应性,假设您在反应性上下文中使用此方法,如模板助手。
每次更新后都会在内部使用Session.set('foundSchedule', ...)
,这会触发使用Session.get('foundSchedule')
的每个被动方法的重新运行 - 这是您在最后一行中执行的操作。要查看这是否是问题,请注释Session.set
行并检查日志,无限循环应该消失。
要解决此问题,请在一个帮助程序中提供数组,并在此处设置的from
和to
参数在数组项的上下文中使用的另一个帮助程序中。这也会显着降低您的代码复杂性。