J'essaie de comprendre les appels asynchrones en utilisant async/wait et try/catch.
Dans l'exemple ci-dessous, comment puis-je enregistrer ma réponse réussie à une variable pouvant être utilisée dans le reste du code?
const axios = require('axios');
const users = 'http://localhost:3000/users';
const asyncExample = async () =>{
try {
const data = await axios(users);
console.log(data); //200
}
catch (err) {
console.log(err);
}
};
//Save response on a variable
const globalData = asyncExample();
console.log(globalData) //Promise { <pending> }
1) Renvoyer quelque chose de votre fonction asyncExample
const asyncExample = async () => {
return await axios(users)
};
2) Appelez cette fonction et gérez sa Promise
renvoyée:
asyncExample().then(users => {
console.log(users)
})
.catch(err => console.error(err))
Pourquoi devriez-vous le gérer comme ça?
Vous ne pouvez pas faire await
de niveau supérieur (il y a une proposition cependant) await
doit exister dans une fonction async
.
Si vous marquez une fonction avec async
, elle retournera une Promise
. Vous pouvez très bien gérer cette Promise
au plus haut niveau, comme je le fais ci-dessus.
try..catch
crée une nouvelle portée de bloc. Utilisez let
pour définir data
avant try..catch
au lieu de const
, return
data
à partir de asyncExample
appel de fonction
(async() => {
const users = 123;
const asyncExample = async() => {
let data;
try {
data = await Promise.resolve(users);
} catch (err) {
console.log(err);
}
return data;
};
//Save response on a variable
const globalData = await asyncExample();
console.log(globalData);
// return globalData;
})();