Tôi có một nút thực hiện một số giao tiếp với máy chủ để kiểm tra xem giá trị đã nhập (thông qua hộp nhập liệu) đã tồn tại chưa. Mã này là như sau:socket.io - socket.on chờ lời hứa
$("#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);
}
}
});
});
Vấn đề là cuộc gọi checkReturn
là không đồng bộ, và do đó các mã mang về mà không thực sự chờ đợi kết quả. Làm thế nào để đảm bảo rằng checkReturn
là lần đầu tiên hoàn thành và chỉ sau đó phần còn lại của mã được thực hiện?
giải pháp này hoạt động tốt hơn cho tôi. bạn có thể giải thích cho tôi một trong một vài dòng như thế nào mà fn() gọi lại hoạt động chính xác? Tôi không thể có được đầu của tôi xung quanh nó. – Tamas
'fn()' là hàm gọi lại. Trong JavaScript, bạn có thể chuyển một hàm này sang hàm khác và sau đó gọi hàm này sau. Trong trường hợp này, Socket.IO đã thực hiện "xác nhận", nơi bạn chuyển một hàm tới máy chủ và máy chủ gọi hàm đó. – hexacyanide
Cảm ơn, tôi đánh giá cao điều đó. – Tamas