私は入力された値(入力ボックスを介して)が既に存在するかどうかを確認するためにサーバーとの通信を行うボタンを持っています。socket.io - socket.on約束を待つ
$("#button").click(function() {
var exists = false;
var name = $("#name").val();
socket.emit("check", name);
socket.on("checkReturn", function (data) {
exists = data.result;
});
if (exists) {
console.log("exists")
} else {
if (name.length > 0) {
socket.emit("create", name);
}
}
});
});
問題はcheckReturn
コールが非同期であるため、コードは実際に結果を待たずに運ぶことです:コードは以下の通りです。 checkReturn
が最初に終了し、残りのコードが実行されることを確認するにはどうすればよいですか?
このソリューションは私にはるかに良い作品。いくつかの行で、fn()コールバックがどうやって正しく動作するのかを私に説明できますか?私はそれの周りに私の頭を得ることができません。 – Tamas
'fn()'はコールバック関数です。 JavaScriptでは、ある関数を別の関数に渡して、後で呼び出すことができます。この場合、Socket.IOは「確認応答」を実装しています。ここで関数をサーバーに渡し、サーバーはその関数を呼び出します。 – hexacyanide
ありがとう、私はそれを感謝します。 – Tamas