gpt4 book ai didi

javascript - "ESLint no-loop-func rule"回调中需要循环变量怎么办

转载 作者:搜寻专家 更新时间:2023-10-31 23:04:23 24 4
gpt4 key购买 nike

我工作的公司要求我们遵循 no-loop-func ES-lint 规则。我处于回调中需要循环变量的情况。

下面是一个例子:

var itemsProcessed = 0;
for (var index = 0; index < uniqueIdentifiers.length; index++) {
let uniqueIdentifier = uniqueIdentifiers[index];

// ESLint: Don't make functions within a loop (no-loop-func)
var removeFileReferenceCallback = function (removeReferenceError) {
if (removeReferenceError !== null) {
NotificationSystem.logReferenceNotRemoved(uniqueIdentifier, undefined);
}

// When all items are removed, use the callback
if (++itemsProcessed === uniqueIdentifiers.length) {
callback(null);
}
};

// Remove the reference
this.database.removeFileReference(uniqueIdentifier, removeFileReferenceCallback);
}

如何重构代码以满足规则?

最佳答案

只是不要使用循环。迭代器方法要好得多。

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);

关于javascript - "ESLint no-loop-func rule"回调中需要循环变量怎么办,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36932679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com