1

我正在探索 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只有在计数器在实际函数中而不是在它的回调中改变时才起作用。

4

2 回答 2

1

async.whilst使用回调来知道您的“worker”函数何时完成处理,因此请记住,当您准备好进入“循环”的下一个周期时,始终调用传递给您作为第二个参数的函数的参数callbackasync.whilst

于 2013-08-12T16:54:12.657 回答
0

我认为缺少的是“进程”函数中的回调

就像是:

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;
                  callback(null, cursor );
                }
          )
      },
      function(){
          console.log(cursor);//should print 0
      }
)

注意 null 因为第一个参数 seance err 是一种标准。

希望这对某人有所帮助。问候

于 2014-12-24T23:36:07.073 回答