我已经构建了我的第一个 Node 应用程序。它收到报价列表,然后我必须收到该报价中每件商品的价格。
现在的问题是我正在使用 for
像这样遍历优惠对象
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
}
现在的问题是,无论需要在 for 循环中做什么,似乎都不是同步运行的。我正在使用一个 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
最佳答案
因此,基本上,您每秒只需查询 API 8 次。为此,您可以循环您的项目并使用 setTimeout 每 1/8 秒发出一个请求:
var delay = 1000 / 8;
objects.forEach(function(val, index) {
setTimeout(function() {
doSomething(index, val);
}, index * delay);
});
保持异步对于性能和 react 性非常重要。它不应该阻止你做任何事情。
关于javascript - 用于非异步的 Node JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33906165/