如何模拟带有承诺的同步 while 循环?

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



慕村225694
浏览 87回答 1
1回答

MM们

试试-方式:asyncasync 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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript