2014-01-16 60 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

相关问题