2011-05-31 81 views
0

希望有一個簡單的方法來做到這一點,我的JavaScript技能是缺乏。我想調用一個函數,將獲得一些Facebook的帖子,將它們添加到一個數組,並返回到其他地方使用。當前代碼如下。如何從JavaScript Facebook API請求中返回數組?

function GetFaceBookStream(name, max) { 
    FB.init({ apiKey: 'removed for post' }); 
    var lastDate = '2011-04-29Z00:00:00'; 
    var faceBookArray = []; 
    var faceBookString;   

    FB.api("/" + name + "/feed", { limit: max, since: lastDate }, function (response) { 
     var sb = string_buffer(); 

     for (var i = 0; i < response.data.length; i++) { 
      var post = response.data[i]; 

      sb.append("<li class='facebook'>"); 
      sb.append("<img alt=\"Facebook\" src='Images\\Carousel\\fbIcon.png\' />"); 
      sb.append("<h4>FACEBOOK</h4>\n"); 
      sb.append("<div class=\"from-name\"><a href=\"http://www.facebook.com/#!/profile.php?id=" + post.from.id + "\">" + post.from.name + "</a></div>"); 
      sb.append("<div class=\"time\">" + post.created_time + "</div>"); 
      if (post.message != undefined) { 
       sb.append("<div class=\"message\">" + post.message + "</div>"); 
      } 

      sb.append("</li>stringSplitMarker"); 
     } 

     faceBookString = sb.toString(); 
     faceBookArray = faceBookString.split('stringSplitMarker');    
    }); 

    return faceBookArray; 
} 

我意識到這種設置將不會工作,因爲在Javascript中的變量範圍,但這基本上是我想要實現的。任何幫助將不勝感激!

回答

0

您正在製作一個異步 AJAX請求。
回調僅在代碼完成後運行。

您需要使用回調傳回數據。

例如:

function GetFaceBookStream(name, max, callback) { 
    ... 
    FB.api(..., function(response) { 
     ... 
     callback(something, else); 
    }); 
} 

可以通過提供一個回調調用該函數接收響應:

GetFaceBookStream(name, max, function(param1, param2) { 
    //This code runs later and can use the response. 
}); 
+0

有反正你能提供一些額外的語法來我的代碼來說明如何正確做到這一點。在進行一些研究之後,我仍然不知道如何回調。 – stackDat 2011-05-31 03:28:29