为http请求延迟一个for循环

我刚刚开始使用JS和Node.js。 我试图build立一个简单的刮板作为第一个项目,使用Node.js和一些模块,如requestcheerio 。 我想在每个包含到数组中的域的每个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秒为每个循环迭代。 然后你提供所有将被传递给函数的参数。