Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用node.js进行非阻塞Facebook API调用?_Facebook_Node.js_Facebook Graph Api - Fatal编程技术网

是否可以使用node.js进行非阻塞Facebook API调用?

是否可以使用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

我想使用node.js提高我的Facebook应用程序的性能。想象一下,这个应用程序试图计算谁是你们在Facebook上最好的朋友,从API调用中获取大量数据——确定你们的朋友在你们的墙上贴了多少次,你们在一起标记了多少张照片——等等

因此,我不想像使用PHP那样一个接一个地运行调用,而是想使用Node.js的非阻塞、异步特性将它们一起发送到Facebook

所以总体执行时间将是最耗时的API调用的时间,而不是每个调用的执行时间之和,对吗

我尝试使用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);
});

这个库将帮助您解决所有异步问题。我对您希望用于解决问题的特定方法进行了哈希运算,但该库作为一个整体,在将一些更繁琐(而且难看!)的异步模式抽象出来方面非常出色。对于那些来自过程的人来说,这是一个很好的转换工具,如果你想学习一些异步模式,你可以在封面下达到顶峰


查看fbsdk源代码,它实际上应该是异步的,因为它在下面使用了
http.request
。由于某种锁定机制,facebook不允许你并行处理多件事情,你可能有问题。你看到了吗,我认为这是另一种选择。为了获得更好的性能,我总是尝试在客户端浏览器中执行尽可能多的facebook请求,然后在必要时将结果发送到服务器……嘿,Raynos,我尝试将http get请求发送到facebook,但没有授权和添加访问令牌-并且它运行异步。Fbsdk以同步方式工作,我已经解决了我的问题,作者已经通过原始http请求获取access_令牌来检查您的建议。Facebook可能会阻止经过身份验证的请求吗?嘿,Danny,我知道批处理请求,并且已经在使用它们了,但我正在寻找一种方法来加速我的应用程序。我需要为Facebook解锁库,以遵循Node.js范式;)