簡體   English   中英

將結果傳遞到node.js中的多個嵌套回調

[英]Passing results up multiple nested callbacks in node.js

以下代碼列出了Instagram用戶的關注者列表,並將它們組合為一個數組,因此我可以在Express路由處理程序中將其返回。

這需要一直運行,直到Instagram表示沒有更多結果可以分頁為止。 該函數接受必需的“用戶ID”,必需的“ access_token”,可選的“ cursor”和回調。

完全組合的數據已成功返回並且采用正確的JSON格式,但是我無法將其返回給快速處理程序。

如何將這些信息傳遞回快遞處理程序?

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);
    }
  });
};

路由處理程序中依賴於getFollows()結果的getFollows()必須位於傳遞給getFollows()的函數中作為其回調。 本質上,對getFollows()的調用需要是處理程序中的最后一條語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM