パラメータを使用してHTTP POSTを送信する別の関数を呼び出す呼び出し元関数があります。今、私は、この成功した機能があるまで(HTTP POSTが完了したとき)、この関数が実行をブロックすることを望みます。Javascript:ブロッキングHTTP POSTを呼び出す
これは私の論理的なコードです:いくつかの単語で
var fingerprint = null;
var janus_session = null;
var inserted = "false";
$(document).ready(function() {
//stuff
fingerprint = FindFingerprint(jsep);
janus_session = janus.getSessionId();
inserted = SendSDPLine(fingerprint, janus_session);
console.log("**in MAIN: inserted= " + inserted);
//other stuff
}
function SendSDPLine(fingerprint, janus_session) {
var sdp = fingerprint;
// var url = "http://localhost:8484/Shine/AccountController";
var action_type = "InsertSDPLine";
var sessionid = janus_session;
$.ajax({
type: "POST",
url: url,
xhrFields: {
withCredentials: false
},
data: {
"action": action_type,
"sdpline": fingerprint,
"sessionid": sessionid
},
success: function(data) {
if (data == "INSERTED") {
inserted = "true";
console.log("in SENDSDPLINE: inserted= " + inserted);
}
return inserted;
// return checkFingerprint (fingerprint);
},
// vvv---- This is the new bit
error: function(jqXHR, textStatus, errorThrown) {
console.log("Error, status = " + textStatus + ", " +
"error thrown: " + errorThrown);
}
});
}
、私はHTTPのPOST応答が確認された後other stuff
が実行されたことをしたいです。私はすでにもう一つの問題を見てきました:最初に、挿入されたfalse
値があります。 HTTP POSTレスポンスの成功(データ)には、true
という値があります。しかし、呼び出し元関数では、console.log
にはundefined
という値があります。
だから、私は2つの質問があります。
- HTTP POSTレスポンスが受信されるまで、呼び出し元の関数の実行を停止する方法
- 、呼び出し元の関数にこの値を返す方法を?
おそらく、async/awaitがお手伝いします。しかしそうでない場合は、呼び出し元関数の実行を停止することは不可能であり、約束やコールバックの使用に頼る必要があります。 –