2014-01-16 59 views
0

我是新來的Facebook應用程序。我使用JavaScript sdk.Any一個人可以幫我請休耕問題 我計算的數字喜歡專輯照片: 這是我的代碼facebook圖api jquery.getjson沒有按照正確的順序執行

FB.api( '/' + album.id + '/照片',函數(照片){

  if (photos && photos.data && photos.data.length){ 
      for (var j=0; j<photos.data.length; j++){        
       var photo = photos.data[j]; 
       var id=photo.id; 
       var likescount=0; 

       jQuery.getJSON('https://graph.facebook.com/'+id+"/likes/?access_token="+accessToken,function(data) 
          {       
         likescount=data.data.length; 
         console.log("likes count : "+likescount); 
         }); 
        console.log("no of likes :"+likescount); 

       }     //end of iterate photos for loop 
      }   //end of photo exist if block 
      }); 

根據我的代碼其O/p將是 喜歡數:2 沒有的喜歡:2 贊好數:3 沒有喜歡:3 個喜歡數:0 不喜歡的:0 喜歡數:2 不喜歡的:2

但它返回的結果爲 不喜歡的:0 不喜歡的:0 不喜歡的:0 不喜歡的:0

喜歡數:2個 喜歡數:3個 喜歡計數:0 喜歡數:2

+0

的的getJSON調用是異步的 - 你傳遞的回調函數可以根據Facebook的API如何迅速返回結果發生在任何時間。在繼續之前,代碼不會等待API調用完成。 – madebydavid

回答

0

晴的Javascript是異步的。 「異步」意味着操作並行發生並且不能保證完成的順序。

在你的情況jQuery.getJSON()是異步的。爲了使同步嘗試讓請求如下

$.ajax({ url: 'https://graph.facebook.com/'+id+"/likes/?access_token="+accessToken, dataType: 'json', async: false, success: function(data) {  //stuff }}); 

裁判:Is it possible to set async:false to $.getJSON call

相關問題