[英]Avoid function declaration in for loops for promises
Eslint警告我不要在for循环内定义函数,我知道这样做是因为它会为每次迭代定义该函数,这显然是不好的。 但是就我而言,我不确定如何重写代码,因此不再需要这样做。
function refreshProfiles(job, done) {
let isFinished = false
for (let i = 0; i < 100; i++) {
// Get PlayerProfile promise and snapshot these
const p = PlayerProfile.findOneAndUpdate(filter, updateDoc).then((profile) => {
if (!profile) {
isFinished = true
}
return refreshPlayerProfileIntoHistory(profile)
}).catch((err) => {
// Error handling
})
promiseArray.push(p)
}
return Promise.all(promiseArray).then(() => {
// Recursive function call if we are not finished yet
if (isFinished) {
done()
} else {
// Recursive function call
refreshProfiles()
}
})
}
TL; DR代码的作用:一旦无法找到配置文件,它应以递归函数调用停止。
题:
在这种特殊情况下,我将如何避免在for循环中定义函数,在这种情况下,我需要访问位于循环中定义的函数之外的变量( isFinished
bool)?
将isFinished
标志和函数移出refreshProfiles
并移到父闭包中(以便两个函数都可以访问它)。 每当首次在外部调用该函数时,请确保将isFinished
重置为false
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.