Node.js:如何使用异步模块执行无限循环

时间:2015-03-22 23:09:16

标签: node.js async.js

我需要进行HTTP调用,然后将响应放入数据库中。我应该永远重复一遍。我一直在阅读异步模块,但我并不了解如何将这些操作与每次迭代之间的等待几秒钟结合起来。

有人可以帮忙吗?

提前致谢。

2 个答案:

答案 0 :(得分:6)

查看async.forever。您的代码看起来像这样:

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);
    }
);

答案 1 :(得分:1)

为什么只使用这样的模块呢?为什么不使用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);
        });
    } 
}

这段代码对于请求真的起作用并且保存部分当然,这只是举例说明我提出的建议。