在NodeJS和Javascript上使用状态变量调用异步函数

时间:2014-10-30 14:36:26

标签: javascript node.js rest asynchronous

我正在编写REST客户端来访问对回复进行分页的REST服务器。我使用Node的HTTPS库编写了类似下面的内容:

var nextPage = true, pageNo=0;

do {
  // builds the url
  options.path = "?page=" + pageNo;

  var req = HTTPS.request(options, function(res) {
    res.on('data', function (chunk) {
      parser(chunk, function(err, result) {
        // do something with result
        if (!("nextPage" in result)) {
          nextPage = false;
        }
      });
    });
  });
  // handle errors and end request

  pageNo++;

} while(nextPage)

这当然不起作用,因为对服务器的请求是异步处理的,而nextPage变量永远不会更新,但是我无法找到一种方法使它能够使用高阶函数。

我应该围绕递归函数包装请求,每次都传递状态吗?或者有更好的方法吗?

更新1: 你的意思是这样的吗?

var nextPage = true, pageNo=0;
var async = require('async');

async.doWhilst ( function () {
  // builds the url
  options.path = "?page=" + pageNo;

  var req = HTTPS.request(options, function(res) {...});

  // handle errors and end request

  pageNo++;

}, function () {return nextPage;}, function () {});

它也不起作用,我做错了什么?

0 个答案:

没有答案