Cześć, chce żeby mój kod zaczekał aż funkcja asynchroniczna się zakończy.
Mam taki kod:
var hash = "test";
database.readSpecificUser(systemsJSON.users[id].id, function (result) {
hash = result.pin;
});
console.log(hash);
return hash;
funkcja database.readSpecificUser jest asynchroniczna. Drugi parametr tej funkcji to callback, który jest wykonywany po tej funkcji. Ten callback zwraca wynik z bazy danych sqlite. Program powinien zaczekać, aż wróci ten callback, nadpisać zmienną hash tą wartością która przyszła w callbacku i dopiero pójść dalej (return hash;).
readSpecificUser: function readSpecificUser(id, callback) {
this.db.transaction(function (transaction) {
//kod asynchroniczny...
callback(result);
}, _this.errorHandler, _this.nullHandler);
return false;
},
Ten console.log wypisuje "test", czyli wypisało się zanim ta funkcja asynchroniczna zwróciła callback.
Wiem jak to zrobić używając promisów, async/await. Problem w tym, że w tym projekcie musze koniecznie wspierać bardzo stare przeglądarki, które tego nie obsługują. Ma ktoś jakiś pomysł jak to zrobić?
Myślałem jeszcze nad czymś takim:
var hash = "test";
database.readSpecificUser(systemsJSON.users[id].id, function (result) {
hash = result.pin;
return hash;
});
W tym przypadku ten return chyba zwraca wartość do funkcji anonimowej a nie tej nadrzędnej w której wykonuje się ten kod. Wie ktoś jak to zrobić?