У меня нет проблем с входом в систему или даже вызовом 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 был асинхронным, у меня были проблемы с вещами undefined
//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 -/me, чтобы получить информацию о пользователе. Затем я могу вызвать /your -fb-id/photos и получить фотографии, но если я сделаю вызов другой функции внутри обратного вызова api фотографии, я могу только ссылаться на этот ответ, я потерял исходный/ответ. Если бы я мог получить ответ из обратного вызова, я бы смог передать его по мере необходимости. Я понимаю, что ответ действителен только внутри обратного вызова, так как я могу сделать его действительным вне обратного вызова, принимая во внимание его асинхронность?