在以下代码上获得此警告:
workflow.removeZSets = function(fn) {
var processed = 0;
for (var c = 1; c < 10; c++) {
workflow.removeZSet(c, function() {
processed++;
if (processed === 9) {
return fn(null, "finished removing");
}
});
}
}
workflow.removeZSet = function(precision, fn) {
rc.zrem("userloc:" + precision, function() {
return fn(null, 'done');
});
});
}
有没有人建议如何在不触发警告的情况下完成此任务?
我有一些想法,例如使用异步库并行运行它们,但这是我在整个代码库中所做的相当普遍的事情,因此对以最佳方式进行反馈很感兴趣。
该错误是因为您在for循环中定义了一个函数。
您可以尝试如下操作,在循环外定义函数:
workflow.removeZSets = function(fn) {
var processed = 0;
function removeZ(c) {
workflow.removeZSet(c, function(err) {
processed++;
if (processed === 9) {
return fn(null, "finished removing");
}
});
}
for (var c = 1; c < 10; c++) {
removeZ(c);
}
}
使用异步之类的库来执行循环将有助于清理代码,这将使您避免检查所有项目是否都已处理(已处理=== 9),因为它是由异步处理的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句