Comment puis-je utiliser un FB.api JS(SDK) réponse en dehors de la fonction de rappel?

Je ne suis pas d'avoir des problèmes avec la connexion ou même l'appel de l'api, j'ai juste un problème avec l'obtention de la réponse en dehors de l'api par callback. Je sais qu'il s'exécute de façon asynchrone, donc je tiens à le mettre dans une fonction qui retourne la réponse. Voici mon idée

//What I would like to be able to do
function fbUser(){
   FB.api('/me', function(response){
      //this logs the correct object
      console.log(response);
   });
//How do I get the response out here?
return response;
}

Je voudrais appeler le /me fonction de l'api une fois au début et ensuite de le passer autour de mon point de vue, les objets (je viens d'utiliser la réponse à l'intérieur de l'épine Dorsale de Vues) et selon ce qui est nécessaire de faire d'autres appels de l'api. J'ai actuellement certaines choses de travail par l'appel de la vue de l'intérieur de la fonction de rappel

//What I am doing now, but I lose the ability to pass anything other than the 
//the current response to this function/View
FB.api('/me', function(response){
     var newView = new facebookView({model: response});
   });

Je orginally a été d'essayer cela, mais parce que les appels aux api asynchrone j'ai eu des problèmes avec les choses étant pas défini

//What I started with but had async issues
var fbResponse;
FB.api('/me', function(response){
     fbResponse = response;
   });
//I would then try and use fbResponse but it would be undefined

Je perds la première réaction, quand je fais la deuxième. Par exemple, mon premier appel d'api est /moi pour obtenir les infos de l'utilisateur. Je peux alors appel /votre-fb-id/photos et d'obtenir des photos, mais si je fais appel à une autre fonction à l'intérieur de la photo de l'api callback je ne peut faire référence à la réponse que j'ai perdu l'original /me réponse. Si je pouvais avoir la réponse de la fonction de rappel, alors je voudrais être en mesure de passer en tant que de besoin. Je comprends que la réponse n'est valable à l'intérieur de la fonction de rappel, alors comment puis-je la rendre valide à l'extérieur de la fonction de rappel tout en prenant en compte c'est asynchronousness?

OriginalL'auteur Joshua | 2011-10-04