Comment reculer de manière asynchrone sur les rappels d'API dans node.js?

Un appel API renvoie la «page» suivante des résultats. Comment puis-je retrancher ce rappel de résultat avec élégance?

Voici un exemple d'où je dois faire ceci:

var url = 'https://graph.facebook.com/me/?fields=posts&since=' + moment(postFromDate).format('YYYY-MM-DD') + '&access_token=' + User.accessToken; request.get({ url: url, json: true }, function (error, response, body) { if (!error && response.statusCode == 200) { _.each(body.posts.data, function (post) { User.posts.push(post); //push some result }); if (body.pagination.next) { // if set, this is the next URL to query //????????? } } else { console.log(error); throw error; } }); 

Je suggère d'envelopper l'appel dans une fonction et de continuer à l'appeler jusqu'à ce qu'il soit nécessaire.

J'ajouterais également un rappel pour savoir quand le processus est terminé.

 function getFacebookData(url, callback) { request.get({ url: url, json: true }, function (error, response, body) { if (!error && response.statusCode == 200) { _.each(body.posts.data, function (post) { User.posts.push(post); //push some result }); if (body.pagination.next) { // if set, this is the next URL to query getFacebookData(body.pagination.next, callback); } else { callback(); //Call when we are finished } } else { console.log(error); throw error; } }); } var url = 'https://graph.facebook.com/me/?fields=posts&since=' + moment(postFromDate).format('YYYY-MM-DD') + '&access_token=' + User.accessToken; getFacebookData(url, function () { console.log('We are done'); });