我有以下代码:
var request = require('request');
var cheerio = require ("cheerio");
var async= require("async");
var MyLink="www.mylink.com";
async.series([
function(callback){
request(Mylink, function (error, response, body) {
if (error) return callback(error);
var $ = cheerio.load(body);
//Some calculations where I get NewUrl variable...
TheUrl=NewUrl;
callback();
});
},
function(callback){
for (var i = 0; i <=TheUrl.length-1; i++) {
var url = 'www.myurl.com='+TheUrl[i];
request(url, function(error, resp, body) {
if (error) return callback(error);
var $ = cheerio.load(body);
//Some calculations again...
callback();
});
};
}
], function(error){
if (error) return next(error);
});
有没有人能提供建议,关于如何在 for loop
中延迟每次循环迭代?比如说,代码在每次迭代完成后等待10秒钟。我尝试了setTimeout
,但似乎没有生效。
}, interval * i, i);
改成}, interval * 1, i);
,从i to 1
? 如果我想要一个常数间隔,则代码就无法工作。 - user1665355setTimeout()
立即返回,不会等待超时后才将控制权返回给for
循环。因此,如果您使用interval * 1
(与仅使用interval
相同),则所有内容都将在十秒钟后同时运行(或多或少——它们将相隔几毫秒,但仅如此)。但是,如果您使用interval * i
,则第一次通过会立即执行,第二次通过循环时将在十秒后执行,第三次通过时将在二十秒后执行,以此类推。 - Trottinterval*1
但没有结果... 但我明白你的意思!谢谢。 - user1665355