我想使用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