Ich habe eine Schaltfläche, die eine Kommunikation mit dem Server durchführt, um zu überprüfen, ob ein eingegebener Wert (über ein Eingabefeld) bereits existiert. Der Code ist der folgende:socket.io - socket.on warte auf Versprechen
$("#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);
}
}
});
});
Das Problem ist, dass der checkReturn
Aufruf asynchron ist, und daher der Code trägt, ohne auf das Ergebnis tatsächlich zu warten. Wie stelle ich sicher, dass checkReturn
zuerst fertig ist und nur dann der Rest des Codes ausgeführt wird?
diese Lösung funktioniert viel besser für mich. kannst du mir in ein paar Zeilen erklären, wie funktioniert das fn() Callback genau? Ich kann mich nicht darum kümmern. – Tamas
Die 'fn()' ist eine Callback-Funktion. In JavaScript können Sie eine Funktion an eine andere übergeben und sie später aufrufen. In diesem Fall hat Socket.IO "Bestätigungen" implementiert, bei denen Sie eine Funktion an den Server übergeben und der Server diese Funktion aufruft. – hexacyanide
Danke, ich weiß es zu schätzen. – Tamas