是否可以使用node.js进行非阻塞Facebook API调用?
我想使用node.js提高我的Facebook应用程序的性能。想象一下,这个应用程序试图计算谁是你们在Facebook上最好的朋友,从API调用中获取大量数据——确定你们的朋友在你们的墙上贴了多少次,你们在一起标记了多少张照片——等等 因此,我不想像使用PHP那样一个接一个地运行调用,而是想使用Node.js的非阻塞、异步特性将它们一起发送到Facebook 所以总体执行时间将是最耗时的API调用的时间,而不是每个调用的执行时间之和,对吗 我尝试使用node-facebook-sdk()进行facebook-API调用,但它似乎正在阻塞,不是吗 只是快速而肮脏地修改示例代码,请求3个用户配置文件,似乎调用不是异步的,每个调用都在上一次调用完成后发送到Facebook。有什么办法可以避免吗 提前感谢是否可以使用node.js进行非阻塞Facebook API调用?,facebook,node.js,facebook-graph-api,Facebook,Node.js,Facebook Graph Api,我想使用node.js提高我的Facebook应用程序的性能。想象一下,这个应用程序试图计算谁是你们在Facebook上最好的朋友,从API调用中获取大量数据——确定你们的朋友在你们的墙上贴了多少次,你们在一起标记了多少张照片——等等 因此,我不想像使用PHP那样一个接一个地运行调用,而是想使用Node.js的非阻塞、异步特性将它们一起发送到Facebook 所以总体执行时间将是最耗时的API调用的时间,而不是每个调用的执行时间之和,对吗 我尝试使用node-facebook-sdk()进行fa
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);
});
这个库将帮助您解决所有异步问题。我对您希望用于解决问题的特定方法进行了哈希运算,但该库作为一个整体,在将一些更繁琐(而且难看!)的异步模式抽象出来方面非常出色。对于那些来自过程的人来说,这是一个很好的转换工具,如果你想学习一些异步模式,你可以在封面下达到顶峰
查看fbsdk源代码,它实际上应该是异步的,因为它在下面使用了
http.request
。由于某种锁定机制,facebook不允许你并行处理多件事情,你可能有问题。你看到了吗,我认为这是另一种选择。为了获得更好的性能,我总是尝试在客户端浏览器中执行尽可能多的facebook请求,然后在必要时将结果发送到服务器……嘿,Raynos,我尝试将http get请求发送到facebook,但没有授权和添加访问令牌-并且它运行异步。Fbsdk以同步方式工作,我已经解决了我的问题,作者已经通过原始http请求获取access_令牌来检查您的建议。Facebook可能会阻止经过身份验证的请求吗?嘿,Danny,我知道批处理请求,并且已经在使用它们了,但我正在寻找一种方法来加速我的应用程序。我需要为Facebook解锁库,以遵循Node.js范式;)