javascript - 如何在变量为假时继续调用函数
问题描述
我正在尝试创建一个脚本,允许我从 DB API 中删除项目,但这需要我对页面进行分页。我的问题是如何在收到第一页(100 项)后继续调用我的删除功能。
我的代码看起来像这样,我知道它不完整,因为这是我卡住的地方。每次迭代 100 多个项目时,我需要将pageLeftOffSet
1 递增,直到没有可迭代的内容可以在products.meta.page.total
function deleteAllProducts() {
let pageLeftOffSet = 0;
Moltin.Products.Sort('created_at')
.Limit(100)
.Offset(pageLeftOffSet)
.All()
.then(products => {
while (products.meta.page.total > 0) {
products.data.forEach((prod, index) => {
if (index == 100) {
pageLeftOffSet++
} else {
Moltin.Products.Delete(prod.id)
.then(success => {}).catch(err => {
console.log(err)
})
}
})
}
})
}
deleteAllProducts()
解决方案
您可以通过传递当前pageLeftOffset
+ 1 来递归调用该函数。
// take offset as param
function deleteAllProducts(pageLeftOffset) {
Moltin.Products.Sort('created_at')
.Limit(100)
.Offset(pageLeftOffSet)
.All()
.then(products => {
while (products.meta.page.total > 0) {
products.data.forEach((prod, index) => {
if (index == 100) {
// recursive call
deleteAllProducts(pageLeftOffset + 1);
} else {
Moltin.Products.Delete(prod.id)
.then(success => {}).catch(err => {
console.log(err)
})
}
})
}
})
}
// initial call with offset=0
deleteAllProducts(0);
推荐阅读
- r - 我应该在哪里通过 conda 搜索已安装的 R 包?
- java - 如何从外部弹出窗口中找出输入字段的标识符
- postgresql - 在 Ubuntu Linux 上执行 PostgreSQL SQL 脚本时出现问题
- vue.js - Vee-validate - 验证可重复的输入字段
- react-native - 无法解决 react-native 中某些类型的流错误
- karate - 如何使用空手道的驱动程序执行 JavaScript
- c# - 反序列化列表
使用牛顿软件 - c# - 添加 x:key 时 Style BasedOn 中断
- node.js - Magento 2.3 + PWA DevServer Url 不起作用
- node.js - 设置配置属性 migrationStorageTableSchema 时,Sequelize 失败,数据库权限被拒绝