如何通过node.js中的APIcallbackasynchronous执行?

API调用返回结果的下一个“页面”。 如何轻松优化结果callback?

这里是我需要这样做的一个例子:

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

       

网上收集的解决方案 "如何通过node.js中的APIcallbackasynchronous执行?"

我会build议将函数包装在一个函数中,直到必要时才调用函数。

我还会添加一个callback来了解进程何时完成。

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