我需要的是在我的服务器端(Node.js),做这样的事情:
$.when(
$.get("https://graph.facebook.com/341446932600922/posts?fields=message,created_time&limit=2", function (dataAcib) {
allPosts.acib = dataAcib.data;
}),
$.get("https://graph.facebook.com/599914540070454/posts?fields=message,created_time&limit=2", function (dataBlusoft) {
allPosts.blusoft = dataBlusoft.data;
})
).then(function () {
$.each(allPosts, function () {
for (i = 0; i < this.length; i++)
{
$("#divNoticias").append("<p>" + this[0].message + "</p>");
}
//- console.log(this[0].message);
});
console.log(allPosts);
var posts = $.makeArray(allPosts.data);
console.log(posts);
});
我想在服务器端完成此操作,以便我可以将结果发送到客户端。
我已经使用了Requestify,并成功获取了一个请求的数据,但是我希望以异步方式完成所有请求(共6个),并在完成后,转发回调。
如何进行所有GET调用以及完成所有这些调用后,在节点服务器端进行回调?
由于
答案 0 :(得分:0)
注意:我之前从未使用过Requestify,但我会根据他们的文档对其进行修改。
使用异步时,我喜欢使用async.js,因为它非常有用。我们可以使用它来map每个回复的网址。
var async = require('async'),
requestify = require('requestify');
var urls = [
'https://graph.facebook.com/341446932600922/posts?fields=message,created_time&limit=2',
'https://graph.facebook.com/599914540070454/posts?fields=message,created_time&limit=2'
];
// loop through each URL
async.mapSeries(urls, function (url, done) {
// for a particular URL, make the request
requestify.get(url).then(function (response) {
// pass the response
done(null, response);
});
// when all URLs are done
}, function (err, responses) {
// responses should be an array e.g. [response, response]
// now do something with responses
});
修改强>
我不知道你从Facebook收到什么样的数据。对于每个操作,您可以通过仅传递所需的数据来调整代码。
async.mapSeries(urls, function (url, done) {
// for a particular URL, make the request
requestify.get(url).then(function (response) {
// pass the response data
done(null, response.data);
});
// when all URLs are done
}, function (err, responses) {
// responses should be a multi-dimensional array e.g. [[data], [data]]
// here, you could merge and flatten them
responses = [].concat.apply([], responses);
console.log(responses);
// now do something with responses
});
合并和展平逻辑来自此answer