Node.js 如何在不知道服务器上的数据量的情况下知道要发出多少请求

Node.js 如何在不知道服务器上的数据量的情况下知道要发出多少请求,node.js,dynamic,server,promise,httprequest,Node.js,Dynamic,Server,Promise,Httprequest,我有一个NodeJS应用程序,需要从另一台服务器(第三方,我无法控制)获取数据。服务器要求您指定要返回的最大条目数以及偏移量。因此,例如,如果服务器上有100条目,我可以请求pageSize的100和offset的0,或pageSize的10的offset1,2,3等,并执行承诺。所有(对多个并发较小的请求进行计时时,执行这些请求的速度更快) 唯一的问题是条目的数量发生变化,并且服务器返回的属性没有指示项目总数的属性。我可以执行类似的操作,然后while循环,直到服务器返回空: var offs

我有一个NodeJS应用程序,需要从另一台服务器(第三方,我无法控制)获取数据。服务器要求您指定要返回的最大条目数以及偏移量。因此,例如,如果服务器上有
100
条目,我可以请求
pageSize
100
offset
0
,或
pageSize
10
offset
1,2,3等,并执行
承诺。所有
(对多个并发较小的请求进行计时时,执行这些请求的速度更快)

唯一的问题是条目的数量发生变化,并且服务器返回的属性没有指示项目总数的属性。我可以执行类似的操作,然后
while
循环,直到服务器返回空:

var offset = 0;
var pageSize = 100;

var data = [];
var response = await //make request with pageSize and offset
while (response is not empty){
   data.push(response);
   offset++;
   //send another request
但这并不像上面那样高效/快速地发送多个并发请求


有什么好方法可以处理服务器上数据的动态长度吗?

如果服务器不给您一些关于有多少项的提示,那么您就无法并行处理多个请求,因为您不想发送比需要更多的请求,也不想人为地使您r请求少量的项目,这样您就可以并行运行更多的请求

您可以运行一些测试并找到一些实际的限制。服务器和您的客户端似乎可以允许您请求的最大项数是多少(100?1000?10000?100000?),并且只需要请求那么多即可。如果这表明之后还有更多项,则发送另一个类似大小的请求

这样做的主要目的是最大限度地减少单独请求的数量,并最大限度地利用单个调用中可以获得的数据。这应该比更多的并行请求更有效,每个请求的项目更少,因为它最终是另一端的同一台服务器和必须提供所有数据的同一个数据存储,因此往返次数最少在最少的情况下,单独的请求可能是最好的


但是,其中一些取决于目标主机的规模和体系结构,因此需要进行实验,以确定什么实际效果最好。

我可以发送一个请求,该请求的
pageSize
值大得离谱,将返回所有内容,但这需要很长时间。服务器的配置方式似乎是发送多个较小的请求要快得多。我希望避免使用循环并等待响应何时为空(数据结束),因为这违背了并行化的目的,但看起来这可能不是一个选项。。。
var offset = 0;
var pageSize = 100;

var data = [];
var response = await //make request with pageSize and offset
while (response is not empty){
   data.push(response);
   offset++;
   //send another request