节点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非常重要 。 它不应该阻止你做任何事情。
- Node.js Redis的lpush错误
- 护照js通过url进行身份validation
- Visual Studio 2015编辑器使用ECMA Script 6语法显示错误
- Node.js TypeError:Object function Object(){}没有方法'assign'
- 使用Jade显示input值内的数据
- file upload通过Dropbox的Api V2
- 如何在节点js中find文件的大小
- response.writeHead()方法中{'Content-Type:':'text / plain'}的数据types是什么?
- 如何从node.js中的一个文件调用JSfunction?