我想使用node.js来提升我的Facebook应用程序性能。想象一下,应用程序试图计算Facebook上的谁是你最好的朋友,从API调用中获取大量数据 - 确定你的朋友发布到墙上的次数,已经标记了多少张照片等等。使用node.js可以做非阻塞的Facebook API调用吗?
因此,我不是一个接一个地运行调用,因为我使用PHP,我有一个想法,使用Node.js的非阻塞异步本质将它们一起发送到Facebook。
因此总的执行时间将是最耗时的API调用的时间,但不是每次调用的执行时间的总和,对吗?
我尝试使用node-facebook-sdk(https://github.com/tenorviol/node-facebook-sdk)进行Facebook API调用,它似乎是它阻塞了,不是吗?
对示例代码进行快速而脏的修改,请求3个用户配置文件,似乎调用不是异步的,每次发送到Facebook之后都会先前完成。有什么办法可以避免这种情况?
提前致谢!
var fbsdk = require('facebook-sdk');
var facebook = new fbsdk.Facebook({
appId : '_APPID_',
secret : '_SECRET_'
});
var i = 0;
setInterval(function() {
i++;
console.log("TICK " + i);
}, 500);
facebook.api('/100000997949108', function(data) {
console.log(data);
});
facebook.api('/1609464095', function(data) {
console.log(data);
});
facebook.api('/100000560820400', function(data) {
console.log(data);
});
望着那确实应该是异步的,因为它使用'http.request'下方的fbsdk源。由于某种锁定机制,您可能在facebook上遇到问题,不允许您并行执行多项操作。 – Raynos 2011-05-01 07:46:16
你见过这个https://developers.facebook.com/docs/api/batch/,我认为这是一个选择。 – DannyKK 2011-05-01 10:06:22
为了获得更好的性能,我总是试图在客户端浏览器中尽可能多地处理Facebook请求,然后在必要时将结果发送到服务器... – dwarfy 2011-05-01 11:25:28