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

时间:2011-05-01 06:17:39

标签: facebook node.js facebook-graph-api

我想使用node.js来提升我的Facebook应用程序性能。想象一下,尝试计算谁是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);
});

1 个答案:

答案 0 :(得分:0)

这个库可以帮助你解决所有异步问题。我将您希望用于解决问题的特定方法进行了深入研究,但整个库非常适合抽象出一些比较繁琐(又丑陋!)的异步模式。对于那些来自程序的人来说,这是一个很棒的过渡工具,如果你想学习一些异步模式,你可以在封面下达到顶峰。

https://github.com/caolan/async/#parallel