8

(入力ボックスを介して) 入力された値が既に存在するかどうかを確認するために、サーバーと何らかの通信を行うボタンがあります。コードは次のとおりです。

$("#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最初にそれが終了してから、残りのコードが実行されるようにするにはどうすればよいですか?

4

4 に答える 4

1
$("#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); } } });    
});
于 2013-10-26T16:25:04.467 に答える