Ho il codice qui sotto:Delay ogni iterazione del ciclo in js nodo, asincrono
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);
});
Qualcuno ha un suggerimento su come posso ritardare ogni iterazione del ciclo nel for loop
? Ad esempio, il codice attende 10 secondi dopo il completamento di ogni iterazione. Ho provato setTimeout
ma non sono riuscito a farlo funzionare.
Perché non è possibile cambiare la prossima ultima riga da '}, intervallo * i, i);' a '}, intervallo di * 1, i);', 'da I a 1' ? Il codice non funziona quindi, se voglio un intervallo costante. – user1665355
'setTimeout()' ritorna immediatamente. Non si siede lì e aspetta il timeout prima di restituire il controllo al ciclo 'for'. Quindi se usi 'interval * 1' (che è lo stesso di' interval', allora stai facendo funzionare tutti i dieci secondi in futuro tutti in una volta (più o meno - saranno a pochi millisecondi di distanza, ma è così Ma se usi 'intervallo * i', questo è" subito "la prima volta," dieci secondi nel futuro "la seconda volta nel ciclo," venti secondi nel futuro "la terza volta, ecc. – Trott
Ok, ho provato "intervallo * 1" ma non ho ottenuto risultati ... Ma capisco cosa intendi! Grazie – user1665355