J'ai une application de nœud qui utilise certaines fonctions asynchrones.
Comment puis-je attendre la fin de la fonction asynchrone avant de poursuivre avec le reste du flux d'application?
Ci-dessous, il y a un exemple simple.
var a = 0;
var b = 1;
a = a + b;
// this async function requires at least 30 sec
myAsyncFunction({}, function(data, err) {
a = 5;
});
// TODO wait for async function
console.log(a); // it must be 5 and not 1
return a;
Dans l'exemple, l'élément "a
" à renvoyer doit être 5 et non 1. Il est égal à 1 si l'application n'attend pas la fonction asynchrone.
Merci
function operation(callback) {
var a = 0;
var b = 1;
a = a + b;
a = 5;
// may be a heavy db call or http request?
// do not return any data, use callback mechanism
callback(a)
}
operation(function(a /* a is passed using callback */) {
console.log(a); // a is 5
})
async function operation() {
return new Promise(function(resolve, reject) {
var a = 0;
var b = 1;
a = a + b;
a = 5;
// may be a heavy db call or http request?
resolve(a) // successfully fill promise
})
}
async function app() {
var a = await operation() // a is 5
}
app()