私は過去に苦労していましたが、今日は苦労して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;
}
// -----私は何人かの人々がこのような何かを示唆した気づい
EDIT ...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;
}
});
}
しかし、これは未定義
を返します。//更新を基に編集
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を返すのは、応答コールバックの呼び出し元に返されます。 make呼び出しが何も返さないので、未定義の理由はmakeCall()の呼び出し側に返されます。 –