如果找到多个结果,则循环函数
funcion looping if it finds more then one result
我有一个函数,如果每次循环在第一个方法中发现多于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>
可能的问题是响应性,假设您在响应性上下文中(如模板帮助器)使用此方法。
在每次更新之后使用Session.set('foundSchedule', ...)
,这会触发使用Session.get('foundSchedule')
的每个反应性方法的重新运行-您在最后一行执行。要查看是否有此问题,请注释掉Session.set
行并检查日志,无限循环应该消失。
要解决这个问题,可以在一个帮助器中提供数组,并在数组项的上下文中使用这里设置的from
和to
参数。这也将显著降低代码的复杂性。
相关文章:
- JavaScript/Jquery:一个特殊用途的for循环函数
- 为循环函数中的元素指定单击
- Jquery下一个和上一个按钮循环函数
- 循环函数(Javascript回调帮助)
- 循环函数不起作用
- 使用ajax调用循环函数
- 在Javascript中修改循环函数的参数
- 如何循环函数数组并在单击时一次执行一个
- 设置超时可以保存我的循环函数不被视为无响应
- 具有超时的循环函数
- j查询如何在一系列延迟后循环函数
- 如何将 JavaScript forEach 循环/函数转换为 CoffeeScript
- for 循环函数似乎未运行
- 对于内部循环函数(新手)
- 循环函数会导致它在 javascript 中无响应
- 循环函数
- 如何优化循环函数
- JS拒绝循环函数
- 中断循环函数
- 在 JavaScript 中循环函数可以吗?