2011-11-21 22 views
0

我有以下的javascript:Facebook的值不被從一個功能傳遞給其他用javascript

function graphStreamPublish(){ 
    FB.api('/me/feed', 'post', 
    { 
     message  : "1", 
     link  : "2", 
     picture  : "3", 
     name  : "4", 
     description : "5" 
    }, 
    function(response) {   
     if (!response || response.error){ 
      alert('Error occured'); 
     }else{ 
      var x = fqlQuery(); 
      console.log(x); 
      alert('Post ID: ' + response.id); 
     } 
    }); 
} 

function fqlQuery(){ 
    FB.api('/me', function(response) { 
     var query = FB.Data.query('select name, profile_url from user where uid={0}', response.id); 
     query.wait(function(rows) { 
      var x=rows[0].name; 
      var y=rows[0].profile_url; 
      return [x, y]; 
     }); 
    }); 
} 

其基於所述代碼從:

http://thinkdiff.net/facebook/new-javascript-sdk-oauth-2-0-based-fbconnect-tutorial/

的問題是當函數graphStreamPublish()運行時,這又會執行fqlQuery,現在graphStreamPublish中的返回值在控制檯中顯示爲未定義。請任何人都可以幫助我從fqlQuery獲取值返回到graphStreamPublish。

請注意,當我在函數fqlQuery中的console.log(rows)時,肯定有從FB返回的值。

謝謝

回答

1

你不能這樣做。你在做:

var x = fqlQuery(); 

但是fqlQuery沒有返回任何東西。您return語句是在回調,這是一個完全不同的方法:

function(rows) { 
    var x=rows[0].name; 
    var y=rows[0].profile_url; 
    return [x, y]; 
} 

這就是爲什麼你的方法回報是不確定的。時間將在調用fqlQuery()和被調用的回調之間傳遞。您將不得不在fqlQuery的回調中執行所需的處理。

相關問題