【问题标题】:Passing results up multiple nested callbacks in node.js在 node.js 中将结果向上传递多个嵌套回调
【发布时间】:2012-09-09 00:00:57
【问题描述】:

以下代码获取 Instagram 用户的关注者列表,并将它们组合成一个数组,以便我可以在 Express 路由处理程序中返回它们。

这需要继续运行,直到 Instagram 表示没有更多结果可供浏览。该函数接受一个必需的“用户 ID”、一个必需的“access_token”、一个可选的“光标”和一个回调。

完全组合的数据以正确的 JSON 格式成功返回,但我无法将其返回到 express 处理程序。

我怎样才能将此信息传回快递处理程序?

var out_data = [];
function getFollows(id,access_token,cursor,callback) {
  if(cursor && cursor != 1) {
    console.log('using cursor url with cursor: '+cursor);
    var url = 'https://api.instagram.com/v1/users/'+id+'/follows?&access_token='+access_token+'&client_id='+client_id+'&cursor='+cursor;
  } else {
    console.log('using standard url');
    var url = 'https://api.instagram.com/v1/users/'+id+'/follows?&access_token='+access_token+'&client_id='+client_id+';
  }
  request(url,function(err,res,body){
    var json = JSON.parse(body);
    _.each(json.data,function(item){
      out_data.push(item);
    });
    if(json.pagination.next_cursor) {
      getFollows(id,access_token,json.pagination.next_cursor,function(adata){
          out_data.push(adata);
      });
    }
    if(!json.pagination.next_cursor) {
      callback(out_data);
      //console.log(out_data);
    }
  });
};

【问题讨论】:

    标签: javascript node.js callback pagination instagram


    【解决方案1】:

    取决于getFollows() 的结果的路由处理程序部分需要在作为其回调传递给getFollows() 的函数中。本质上,对getFollows() 的调用必须是处理程序中的最后一条语句。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-18
      • 2011-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多