承诺while循环,如何

Promises while loop, how to?

本文关键字:如何 循环 while 承诺      更新时间:2023-09-26

我需要对API进行一些连续调用,直到请求限制完成。在每个请求之后,一些东西被保存到数据库中,下一个请求取决于从第一个请求中检索到的值,所以每个请求都不能启动,直到前一个请求完成。

普通的while循环不起作用,因为它将以并行方式运行所有的promise。而一个接一个的承诺只适用于固定数量的请求。

那么,如何实现promise while循环呢?

基本就是我想要的:

let remaining = 200;
let start_id = null;
while (remaining > 0) {
  // make http request with param start_id
  // save results to db
  // update 'update' start_id
  // update 'remaining' from http header
}

我在想(伪代码):

function makeAsyncCall(data) {
    if (data) {
        // save to db
    }
    $.ajax({
        url: '/url',
        success: function(data) {
           makeAsyncCall(data);
        }
    })
}

然后你需要有一个标志来决定何时停止调用函数