Как мне использовать ответ FB.api (JS SDK) вне функции обратного вызова?

У меня нет проблем с входом в систему или даже с вызовом api, у меня просто проблема с получением ответа за пределами обратного вызова api. Я знаю, что он работает асинхронно, поэтому я хотел бы поместить его в функцию, которая возвращала бы ответ. Вот моя идея

//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;
}

. Я хотел бы вначале вызвать функцию / me api один раз, а затем передать ее своим объектам представления (я просто использую ответ внутри Backbone Views) и, в зависимости от того, что необходимо, сделать другой api звонки.В настоящее время у меня есть определенные вещи, которые работают, вызывая представление изнутри обратного вызова

//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});
   });

. Первоначально я пробовал это, но поскольку вызов api является асинхронным, у меня были проблемы с неопределенным значением

//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

, я теряю первый ответ, когда делаю второй. Например, мой первый вызов API - это / мне, чтобы получить информацию о пользователе. Затем я могу позвонить / your-fb-id / photos и получить фотографии, но если я вызову другую функцию внутри обратного вызова API фотографий, я могу сослаться только на этот ответ. Я потерял исходный ответ / me. Если бы я мог получить ответ из обратного вызова, я бы смог передать его по мере необходимости. Я понимаю, что ответ действителен только внутри обратного вызова, поэтому как мне сделать его действительным вне обратного вызова, учитывая его асинхронность?

15
задан Joshua 4 October 2011 в 18:41
поделиться