Ho un pulsante che esegue alcune comunicazioni con il server per verificare se esiste già un valore inserito (tramite una casella di input). Il codice è il seguente:socket.io - socket.on attendere la promessa
$("#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);
}
}
});
});
Il problema è che la chiamata checkReturn
è asincrona, e quindi il codice svolga senza realmente aspettando il risultato. Come faccio a essere sicuro che checkReturn
sia finito e solo allora il resto del codice viene eseguito?
funziona molto meglio per me. puoi spiegarmi in poche righe come funziona esattamente questa callback fn()? Non riesco a capirlo. – Tamas
Il 'fn()' è una funzione di callback. In JavaScript, puoi passare una funzione a un'altra e poi chiamarla in un secondo momento. In questo caso, Socket.IO ha implementato "riconoscimenti", in cui si passa una funzione al server e il server chiama tale funzione. – hexacyanide
Grazie, lo apprezzo. – Tamas