我正在探索node.js异步库以在node.js中实现游标(https://dev.twitter.com/docs/misc/cursoring)。

whilst看起来像我要寻找的功能,但我的情况略有不同。每次我发出GET请求时,都必须等待获得响应,然后更改游标值。

async文档中,这是为whilst给出的示例

var count = 0;

async.whilst(
    function () { return count < 5; },
    function (callback) {
        count++;
        setTimeout(callback, 1000);
    },
    function (err) {
        // 5 seconds have passed
    }
);


我尝试做类似的事情来实现Twitter光标导航,但是似乎没有用:

async.whilst(
      function(){return cursor != 0},
      function(callback){
          oa.get(
                'https://api.twitter.com/1.1/friends/list.json?cursor=' + cursor + '&skip_status=true&include_user_entities=false'
                ,user.token //test user token
                ,user.tokenSecret //test user secret
                ,function (e, data, res){
                  if (e) console.error(e);
                  console.log("I AM HERE");
                  cursor = JSON.parse(data).next_cursor;
                }
          )
      },
      function(){
          console.log(cursor);//should print 0
      }
)


编辑:
我的get请求回调中的console.log(“ I AM HERE”)仅被调用一次,此后没有任何反应。

我不认为中间的函数应该具有更改计数器的回调,并且whilst仅在计数器在实际函数中更改而不在其回调中起作用时才起作用。

最佳答案

async.whilst使用回调来知道您的'worker'函数何时完成处理,因此请记住在准备下一个函数时始终调用callback传递给该函数的async.whilst参数作为第二个参数“循环”的循环。

08-04 17:48