【发布时间】:2017-01-12 23:03:13
【问题描述】:
我需要对 API 进行一些连续调用,直到请求限制完成。在每个请求之后,都会将一些内容保存到数据库中,并且下一个请求取决于从第一个请求中检索到的值,因此在前一个请求完成之前,每个请求都无法启动。
普通的 while 循环不起作用,因为它会以并行的方式运行所有的 Promise。并且相互连接的 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
}
【问题讨论】:
-
你是否必须在你的下一个承诺中使用回调从一个早期的承诺?
-
用递归函数代替while循环怎么样?
-
@redned,不会遇到内存问题吗?嗯,我想不会,不错的建议
-
链式承诺有限制吗?不过,我还没有尝试过 200 条链。
-
我认为 200 次递归调用不会有问题。当我需要提出一个加载系统时,它起作用了,但我总共只有大约 5-10 个请求。
标签: javascript while-loop promise