我工作的公司要求我们遵循no-loop-func ES-lint规则。我处于回调中需要循环变量的情况。
下面可以找到一个例子:
watch netstat -a | grep ESTABLISHED | grep -c ':7003$'
如何重构代码以便满足规则?
答案 0 :(得分:6)
不要使用循环。迭代器方法要好得多。
uniqueIdentifiers.forEach(function(uid) {
this.database.removeFileReference(uid, function (err) {
if (err) {
NotificationSystem.logReferenceNotRemoved(uid, undefined);
}
});
}, this);
callback(null);
要在完成所有操作后拨回电话,您将需要以下内容:
var db = self.database;
var promises = uniqueIdentifiers.map(function(uid) {
return new Promise(function (res) {
db.removeFileReference(uid, function (err) {
if (err) {
NotificationSystem.logReferenceNotRemoved(uid, undefined);
}
res();
});
});
});
Promise.all(promises).then(callback);
答案 1 :(得分:0)
我将ESList用于我的所有JavaScript,并且我遵守no-loop-func
规则,如果你不这样做,它会严重伤害你。原因在这里得到了很好的解释:JavaScript closure inside loops – simple practical example。
我建议在重构方面有其他答案。
答案 2 :(得分:0)
可以使用cars
解决您的问题吗?
bind
答案 3 :(得分:0)
我还将对象转换为数组,然后用于每个。