Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[INFO rapido]: Les promises chainée #5

Open
kiuKisas opened this issue May 31, 2022 · 0 comments
Open

[INFO rapido]: Les promises chainée #5

kiuKisas opened this issue May 31, 2022 · 0 comments

Comments

@kiuKisas
Copy link
Collaborator

kiuKisas commented May 31, 2022

un truc cool avec les promises, c'est que tu peux les chainer. Par exemple:

const getSuperDataFromData = async (data) => 'super_' + data.name 
const wowAmazing = async (superData) => console.log(`Wow ${superData} !`)
...

async function test(data) {
  return dosomething()
    .then((data) => getSuperDataFromData(data))
    .then((superData) => wowAmazing(superData))
    .catch(e => erreurInSomethingOrGetSuperDataOrWowAmazing(e))
    .finally(() => alwaysExecuteAfter())
}

Tu n'as pas besoins d'ajouter un catch et/ou finally a chaque etapes :)
D'ailleurs dans cet exemple, comme mes fonctions ne prennent qu'un parametre, je peux directement les appeller sans faire de fonction anonyme. (fonction anonyme ou arrow fonction, c'est ça: () => 'something' )
Du coup tu pourrais avoir:

async function test(data) {
  return dosomething()
    .then(getSuperDataFromData)
    .then(wowAmazing)
    .catch(erreurInSomethingOrGetSuperDataOrWowAmazing)
    .finally(alwaysExecuteAfter)
}

Je trouve ça super clean pour suivre l'execution du programme tout en gérant les erreurs :)
Mais bon encore une fois, c'est une direction et y'en a d'autre ;)

D'ailleurs, j'aurais pu écrire:

async function test(data) {
  return Promise.resolve(dosomething()
    .then(getSuperDataFromData)
    .then(wowAmazing)
    .catch(erreurInSomethingOrGetSuperDataOrWowAmazing)
    .finally(alwaysExecuteAfter)
  )
}

Mais ça serait redondant d'écrire Promise.resolve.
Voila voila !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant