Node.js:如何使用异步模块执行无止境循环
我需要进行HTTP调用,然后将响应放入数据库中。我应该永远重复。我一直在阅读异步模块,但我不明白如何在每次迭代之间等待几秒钟的同时结合这些操作 有人能帮忙吗 提前感谢。仔细看看。您的代码如下所示:Node.js:如何使用异步模块执行无止境循环,node.js,async.js,Node.js,Async.js,我需要进行HTTP调用,然后将响应放入数据库中。我应该永远重复。我一直在阅读异步模块,但我不明白如何在每次迭代之间等待几秒钟的同时结合这些操作 有人能帮忙吗 提前感谢。仔细看看。您的代码如下所示: var async = require("async"); var http = require("http"); //Delay of 5 seconds var delay = 5000; async.forever( function(next) { http.g
var async = require("async");
var http = require("http");
//Delay of 5 seconds
var delay = 5000;
async.forever(
function(next) {
http.get({
host: "google.com",
path: "/"
}, function(response) {
// Continuously update stream with data
var body = "";
response.on("data", function(chunk) {
body += chunk;
});
response.on("end", function() {
//Store data in database
console.log(body);
//Repeat after the delay
setTimeout(function() {
next();
}, delay)
});
});
},
function(err) {
console.error(err);
}
);
为什么只使用这样一个模块来实现这一点?为什么不直接使用setTimeout,比如:
function makeRequest() {
request(url, function(response) {
saveInDatabase(function() {
// After save is complete, use setTimeout to call again
// "makeRequest" a few seconds later (Here 1 sec)
setTimeout(makeRequest, 1000);
});
}
}
当然,这段代码对请求和保存部分不起作用,它只是给出了一个我建议的示例。谢谢!我一直在尝试这样做,但我遇到了一个情况,内存由于某种原因变得越来越大…我会担心无休止的递归,这和使用setTimeout有什么区别?这种情况的优点是什么?它使用setTimeout@然而,YlinaGreed是正确的,这可以通过递归实现。此示例演示如何使用async.js执行等效操作