array.forEach( element => { let offset = 0; let numberOfRows = 100; while (numberOfRows === 100){ getUrls(offset*100, element) // DB query that retrieves rows, more on this below .then( //code ) offset++; }})getUrls:采用 100n 偏移量的数据库存储过程,返回包含该存储过程结果的承诺我尝试使用 while 循环,然后才意识到它没有等待承诺解决,创建了大量的 getURL 承诺并溢出堆内存。我最终保留了 while 循环,将其全部包装在一个函数中,并承诺将其强制转换为同步代码。有没有更好/替代的方法来做到这一点,比如用承诺模拟一个while循环?什么是成语JS方式?asyncawaitgetUrls
1 回答
MM们
TA贡献1886条经验 获得超2个赞
试试-方式:async
async function myFunc() {
for (const element of array) {
let offset = 0;
let numberOfRows = 100;
while (numberOfRows === 100){
const resp = await getUrls(offset*100, element);
//code
offset++;
}
}
}
请注意,它包含您使用 .respthen
另请注意,外部函数返回 .myFuncPromise
添加回答
举报
0/150
提交
取消