Можно ли делать неблокирующие вызовы API Facebook, используя node.js? - PullRequest
3 голосов
/ 01 мая 2011

Я хочу использовать node.js для повышения производительности приложений Facebook. Представьте себе приложение, которое пытается вычислить, кто вы лучший друг на Facebook, извлекая много данных из вызовов API - определяя, сколько раз ваши друзья опубликовали на вашей стене, сколько фотографий вы отметили вместе - и так далее.

Таким образом, вместо того, чтобы выполнять вызовы один за другим, как я использую PHP, у меня есть идея отправить их всех вместе в Facebook, используя неблокирующую асинхронную природу Node.js.

Таким образом, общее время выполнения будет временем выполнения API-вызова, которое занимает больше всего времени, а не суммой времени выполнения каждого вызова, верно?

Я пытаюсь использовать node-facebook-sdk (https://github.com/tenorviol/node-facebook-sdk) для вызовов API Facebook, и похоже, что он блокируется, не так ли?

Просто быстрая и грязная модификация примера кода, запрашивающая 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 голосов
/ 06 августа 2012

Эта библиотека поможет вам со всеми асинхронными вещами.Я хэшировал конкретный метод, который вы хотели бы использовать для решения вашей проблемы, но библиотека в целом отлично справляется с абстракцией некоторых утомительных (и уродливых!) Асинхронных шаблонов.Отличный инструмент для перехода от процедурных, и вы можете взять пик под одеялом, если хотите изучить некоторые асинхронные шаблоны.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...