Ich möchte die Seite aktualisieren, nachdem Werte in einer Datenbank gespeichert wurden, mit js Versprechen.Wie kann ich eine JavaScript-Funktion ausführen, nachdem ein anderer die Versprechungen abgeschlossen hat?
Mein Code ist in einem jQuery-Ereignis-Listener eingewickelt:
$("img[class=okButton]").click(function(){
var field_userid = $(this).attr("id");
doThisFirst();
// then make a promise
const wait = ms => new Promise(resolve => setTimeout(resolve, ms));
wait(500).then(() => writeNewRoom(field_userid)); // function to write to database
refreshPage(); // after write has finished
});
///////////////////
function writeNewRoom(field_userid)){
// ajax to do something;
}
///////////////////
function refreshPage(){
if(window.confirm("Click to refresh")){location = location}
}
Das gewünschte Verhalten ist zunächst Daten zu verarbeiten, dann zu beenden, bevor in der writeNewRoom() Funktion „etwas zu tun“, um die Seite in der refreshPage erfrischend () Funktion.
Was tatsächlich passiert, ist, dass die erste doThisFirst() - Funktion korrekt verarbeitet wird, aber dann erscheint das window.confirm-Feld in der dritten Funktion, BEVOR die writeNewRoom-Funktion ausgeführt wurde.
Ich habe noch nie zuvor Versprechungen verwendet, also kann jemand helfen herauszufinden, was schief gelaufen ist? Ich nahm die grundlegende Syntax von der Mozilla-Website: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises
Jede Hilfe wird sehr geschätzt.
In einem '.hen'-Callback? – jonrsharpe
Würde [Verkettung versprechen] (https://javascript.info/promise-chaining#returning-promises) helfen? – evolutionxbox