为http请求延迟一个for循环
我刚刚开始使用JS和Node.js。 我试图build立一个简单的刮板作为第一个项目,使用Node.js和一些模块,如request
和cheerio
。 我想在每个包含到数组中的域的每个http请求之间添加一个5秒的延迟。 你能解释一下怎么做吗?
这是我的代码:
var request = require('request'); var arr = [ "http://allrecipes.com/", "http://www.gossip.fr/" ]; for(var i=0; i < arr.length; i++) { request(arr[i], function (error, response, body){ console.log('error:', error); console.log('statusCode:', response && response.statusCode); console.log('body:', body); }); }
使用setTimeout
:
var request = require('request'); var arr = ["http://allrecipes.com/", "http://www.gossip.fr/" ]; for (var i = 0; i < arr.length; i++) { setTimeout(request, 5000 * i, arr[i], function (error, response, body){ console.log('error:', error); console.log('statusCode:', response && response.statusCode); console.log('body:', body); }); }
你基本上做了循环,并说, request
方法应该被调用的延迟等于5000 * i
,这是5000毫秒乘以i
,所以它会增加5秒为每个循环迭代。 然后你提供所有将被传递给函数的参数。