Aguardando a chamada da API terminar em Javascript antes de continuar
algo com o qual eu tenho lutado no passado e estou lutando hoje é impedir que um API / AJAX continue até que você tenha recebido sua resposta. Atualmente estou trabalhando com a API do Facebook. Eu preciso obter uma resposta de uma chamada, em seguida, devolvê-lo, mas o que está acontecendo é que minha função está retornando antes que eu receba uma resposta da chamada da API. Eu sei porque está acontecendo, eu não consigo descobrir como evitá-lo! Aqui está meu código ...
function makeCall(){
var finalresponse = "";
var body = 'Test post';
FB.api('/me/feed', 'post', { message: body }, function(response) {
if (!response || response.error) {
finalresponse = response.error;
} else {
finalresponse = 'Post ID: ' + response.id;
}
});
return finalresponse;
}
// ----- EDITAR
Eu notei que algumas pessoas sugeriram algo assim ...
function makeCall(){
var finalresponse = "";
FB.api('/me/feed', 'post', { message: body }, function(response) {
if (!response || response.error) {
finalresponse = response.error;
return finalresponse;
} else {
finalresponse = 'Post ID: ' + response.id;
return finalresponse;
}
});
}
Mas isso retorna indefinido
// EDIT BASEADO EM ATUALIZAÇÕES
function share_share(action_id){
var finalresponse = makeCall(action_id, process);
return finalresponse;
}
function makeCall(action_id, callback){
var body = 'Test post';
FB.api('/me/feed', 'post', { message: body }, function (response) {
if (!response || response.error) {
var finalresponse = response.error;
} else {
finalresponse = 'Post ID: ' + response.id;
}
callback(action_id, finalresponse);
});
}
function process(action_id, finalresponse){
console.log(finalresponse);
}