简体   繁体   中英

Node.js: How to call method with callback in a cycle?

How to call method with callback in cycle?

Suppose I need to call http.get but be sure that only one request is awaiting response in a time (that is not putting too much presser on a server)

http.get(url, function(res) {
  console.log("Got response: " + res.statusCode);
}).on('error', function(e) {
  console.log("Got error: " + e.message);
});

You can try this recurcive call, which takes how many requests to handle. make sure you declare count as global variable.

var count = 0;

function cyclicCall(numberOfRequests, callback) 
{

    http.get(url, function (res) {
        count++;
        if (numberOfRequests != count) {
            console.log("Got response: " + res.statusCode);
            cyclicCall(count, callback)
        }
        else {
            callback();
        }

    }).on('error', function (e) {
        console.log("Got error: " + e.message);
    });
}

You could use underscore and user after.

var _ = require('underscore');
var call = _.after(N, callback);

for(var i = 0; i < N; i++){
 http.get(url, function(res) {
  console.log("Got response: " + res.statusCode);
  call();
 }).on('error', function(e) {
  console.log("Got error: " + e.message);
  call();
 });
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM