节点JS多个http请求丢失响应

问题描述:

你好我正在使用一个循环的节点js http请求,它的大小是1728,它的响应缺少像它卡在1727善意帮助我我试图解决这个问题三天。节点JS多个http请求丢失响应

for (let i = 0 ; i < playerLength ; i++) { 
for (let j = startYear ; j < currentYear ; j++) { 

    var playerSeasonData = {}; 
    playerSeasonData.url = me.config.sport.url + league + '/v2/JSON/PlayerSeasonStatsByPlayer/'+ j +'/' + playerData[i].playerID; 
    playerSeasonData.method = 'GET'; 
    playerSeasonData.headers = {}; 
    playerSeasonData.headers = {'Ocp-Apim-Subscription-Key':'**********************'}; 

    me.request(playerSeasonData ,function( error, response, data ){ 
     count ++; 
    )}; 
} 

}

+0

你如何推断​​请求“缺少响应”?它始终是相同数量的请求?尽量减少这个例子,使其变得更小和自包含没有未指定的变量('playerLength'等的值是什么)?请注意,响应是异步的,如果您在循环内某处读取“count”,则值可能会错误,因为随着新响应的到来,计数器将随时间而变化。 –

+0

我正在计算循环内的请求和播放器长度是557,尽量减少大小,但我仍然面临同样的问题.. – AhmedSaboorRiksof

+0

帮助我,如果你找到任何解决方案 – AhmedSaboorRiksof

您所遇到的问题是,所有的HTTP请求已经完成之前,你的函数返回。

考虑promisifying me.request通过bluebird,然后返回Promise.all。这里有一个例子:http://bluebirdjs.com/docs/api/promise.all.html

+0

我会实现这一点,然后我会告诉你感谢的答复 – AhmedSaboorRiksof

+0

我实现promisifying me.request通过蓝鸟然后承诺它的所有没有工作,它卡在1698或1643 – AhmedSaboorRiksof

+0

你可以再次发布代码plz? –

您是否尝试过使用< =而不是<的简单解决方案。很难说你正在展示的代码,但这可能是1728 & 1727之间的差异。

+0

没有必要做这个人我在循环之前初始化count变量 – AhmedSaboorRiksof