我過去一直在努力的事情,今天正在努力阻止API/AJAX繼續,直到您收到您的回覆。目前我正在使用Facebook API。我需要從一個調用得到響應然後返回它,但是發生的事情是我的函數在我從API調用得到響應之前返回。我知道爲什麼會發生,我無法弄清楚如何防止它!這裏是我的代碼...在繼續之前等待API調用以Javascript完成之前
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;
}
// -----編輯
我注意到有些人認爲這樣的事情...
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;
}
});
}
但這返回undefined
//根據更新編輯
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);
}
我相信因爲你的'return finalresponse;'在API調用之外。 –
您的退貨將在FB.api完成之前執行 – Dhiraj
您在編輯中提供的代碼不正確。在回調中返回finalResponse將返回給您的回覆回調的調用者。未定義的原因返回給makeCall()的調用者是因爲make call沒有返回任何東西。 –