gpt4 book ai didi

javascript - socket.io - socket.on 等待 promise

转载 作者:数据小太阳 更新时间:2023-10-29 04:37:03 24 4
gpt4 key购买 nike

我有一个按钮可以与服务器进行一些通信,以检查输入的值(通过输入框)是否已经存在。代码如下:

$("#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,然后才执行其余代码?

最佳答案

除了其他答案,您还可以使用确认,在客户端和服务器之间传递回调。然后你可以只使用 emit 函数的回调:

$("#button").click(function() {
var exists = false;
var name = $("#name").val();

socket.emit('check', name, function (data) {
exists = data.result;
if (exists) console.log("exists");
else (if (name.length > 0) socket.emit("create", name));
});
});

在服务器端它看起来像这样:

io.sockets.on('connection', function (socket) {
socket.on('check', function(name, fn) {
// find if "name" exists
fn({ exists: false });
});
});

关于javascript - socket.io - socket.on 等待 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19608923/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com