2012-12-11 16 views
6

私はこの問題について、私がコールバック関数を使用する必要があることを知っていますが、コールバック付きのfb.api外で値を取得する変数

var id_user=get_id_user_login();//undefined?????????? 

function get_id_user_login(){ 
    FB.api(            
     '/me',      
      {fields:'id'}, 
      function(response){//callback  
       console.log(response.id);//OK 
       return response.id; 
      } 
    );    
}; 

答えて

7

あなただけの非同期it'sため、値を返すcan't:もちろん何か私が間違って

私のコードを作ってるんだが、これがあります。これを試してみてください:

function customFunction(id) { 
    console.log(id); 
} 

function get_id_user_login(){ 
    FB.api(            
     '/me',      
      {fields:'id'}, 
      function(response){ 
       customFunction(response.id); 
      } 
    );    
}; 

get_id_user_login(); 
+0

はい、本当に、私はどうもありがとう、これを試してみました。私はこれは非常に "スパゲッティ"ではないと思っていたので、これを書いたのですが、このようないくつかの機能を書いても...でもOKです、それが唯一の方法だと思います..... – francis

+0

これは最適な解決策です。もちろん、それはあなたのプロジェクト全体に依存しますが、もちろんそれはより大きなものでは少し違って見えます。それがあなたを助けた場合私の答えを受け入れることを忘れないでください:) – luschn

+0

はい、たくさん、しかし私は15の評判が必要です!,しかし、私は – francis

-1

パーフェクト、これは正常に動作例を示します。

function mostrarInvitaciones(){ 
FB.login(function(response) 
{ 
    var object = { method: 'apprequests', 
      message: 'Message Txt', 
      filters: ['app_non_users'], 
      max_recipients: '1', 
      redirect_uri: 'here the url app' 
    }; 
    // Function callback for get the values, because the Fb.api is async. 
    function callback(response){ 
      function obtenerDatosLoginUsuario(id, name) { 
       //console.log('Id Usuario desde custom: '+id); 
       //console.log('Nombre usuario desde custom: '+name); 
       document.getElementById('miid').innerHTML = id; 
       document.getElementById('minombre').innerHTML = name; 
      } 
      function obtenerDatosAmigo(id, name) { 
       //console.log('Id Amigo desde custom: '+id); 
       //console.log('Nombre Amigo desde custom: '+name); 
       document.getElementById('idamigo').innerHTML = id; 
       document.getElementById('nombreamigo').innerHTML = name; 
      } 
      // Datos del Login Usuario 
      function datosLoginUsuario(){ 
       FB.api('/me',{fields: 'name'}, function(response) 
       { 
        //console.log(response.name); 
        //console.log(response); 
        obtenerDatosLoginUsuario(response.id,response.name); 
       }); 
      } 
      // Datos del amigo seleccionado 
      function datosAmigoInvitado(){ 
       FB.api('/'+ response.to, function(response) 
       { 
        //console.log(response.id); 
        //console.log(response.name); 
        obtenerDatosAmigo(response.id,response.name); 
       }); 
      } 
      // Call the function 
      datosLoginUsuario(); 
      datosAmigoInvitado(); 

    };  
    // Facebook UI 
    FB.ui(object, callback) 

}) 

}

関連する問題