节点JS不是asynchronous的

我已经构build了我的第一个Node应用程序 它收到一个报价清单,然后我必须收到该报价上的每个项目的价格。

现在问题是我用来通过提供对象像这样

 for(var k = 0; k < offers_object.length; k++){ offer = offers_object[k]; logger.info('Time Loaded is '+Math.floor(new Date() / 1000)); .... some stuff... .... logger.info('Time request is '+Math.floor(new Date() / 1000)); .... send request .... some more stuff after the requst } 

现在的问题是,无论在循环内需要做什么似乎不是同步运行。 我正在使用一个API来请求每秒8个请求限制我的物品价格。

而我从计时器得到的是:

 info: Time Loaded is 1448409307 info: Time Loaded is 1448409307 info: Time Loaded is 1448409307 info: Time Loaded is 1448409307 info: Time Loaded is 1448409307 info: Time Loaded is 1448409307 info: Time Loaded is 1448409307 info: Time request is 1448409308 info: Time request is 1448409308 info: Time request is 1448409308 info: Time request is 1448409308 info: Time request is 1448409308 info: Time request is 1448409308 info: Time request is 1448409309 

我在这里错过了什么? 对不起,但新的节点JS

所以,基本上,你只需要每秒查询一次API 8次。 为了实现这一点,你可以循环你的项目,并使用setTimeout每个1/8秒发出一个请求:

 var delay = 1000 / 8; objects.forEach(function(val, index) { setTimeout(function() { doSomething(index, val); }, index * delay); }); 

保持asynchronous对于性能和react native非常重要 。 它不应该阻止你做任何事情。