Løfter i JavaScript | Forklart

Løfter i JavaScript | Forklart
JavaScript er et programmeringsspråk på høyt nivå der kode utføres linje for linje, noe som betyr at den neste kodelinjen bare utføres når den forrige kodelinjen er fullstendig utført. For å løse dette problemet, tilbyr JavaScript tilbakeringingsfunksjoner som er asynkrone som tilsvarer en funksjon.

Asynkron kode utføres umiddelbart og i motsetning til synkron kode, venter den ikke på den forrige kodelinjen skal fullføre utførelsen. Når vi har å gjøre med flere asynkrone operasjoner, er det imidlertid ikke et godt valg å bruke tilbakeringinger, da koden blir forvirrende, uhåndterlig og vanskelig å forstå eller feilsøke. Derfor er løsningen å bruke løfter.

I dette innlegget vil vi gå gjennom begrepet løfter i JavaScript sammen med eksempler.

Hva er løfter?

Et løfte er en operasjon eller oppgave som vil bli fullført i fremtiden. Promise Syntax er gitt nedenfor:

Promise Syntax:

La MyPromise = nytt løfte (funksjon (Løs, avvis)
// kode
);

Som vi kan se av den ovennevnte syntaks av løfte, tar Promise Constructor bare tilbakeringingsfunksjonen som et argument. I tilbakeringingsfunksjonen har vi besluttsomheten og avviser argumenter der besluttsomhet kalles når operasjonene som utføres i tilbakeringingsfunksjonen er vellykket. Imidlertid, hvis operasjonen ikke lykkes, kan du ringe avvise.

For å si det ganske enkelt la oss anta at bursdagen din kommer opp og moren din lover deg å skaffe deg en ny bærbar PC. Du har ikke mottatt den bærbare datamaskinen, og du kan ikke være helt sikker på om du får den bærbare datamaskinen eller ikke før bursdagen din. Moren din kan kjøpe deg en bærbar datamaskin, eller hun kan ombestemme seg og kjøpe deg noe annet. Dette er et løfte på lekmannsspråk.

Hvert løfte har tre stater eller muligheter:

  • Venter: Du er ikke sikker på om du vil få den bærbare datamaskinen eller ikke; udefinert.
  • Oppfylt: Moren din kjøper deg den bærbare datamaskinen; resultatverdi.
  • Avvist: Moren din kjøper deg ikke en bærbar PC; Feilobjekt.

Fordeler med løfter

  • Asynkrone operasjoner håndteres på en enklere måte
  • Kodeavlesbarhet er forbedret, og feilsøking blir lett
  • Feilhåndtering er enklere enn hendelser eller tilbakeringinger.
  • Strømmen av kontroll er bedre definert av asynkron kode.

La oss gå gjennom et annet konsept innen løfter som går til løftet forbrukere hvis funksjon er å konsumere løfter ved å registrere funksjoner ved å bruke:

  • .Så (): Når et løfte blir løst eller avvist, kalles denne metoden.
  • .fangst (): Når et løfte blir avvist eller en feil oppstår under løftets utførelse, kalles denne metoden.

Eksempel:

I dette eksemplet vil vi sjekke om to tall er like eller ikke ved å bruke løfter, og basert på om denne operasjonen er vellykket eller ikke, vil vi vise utdata.

// Promise initialisering
// Promise initialisering
VarmyPromise = newPromise (funksjon (løs, avvis)
const num1 = 4;
const num2 = 4;
// Sammenlign to tall
if (num1 === num2)
// når operasjonen er vellykket
Løse();
annet
// Når feil kommer
avvise ();

);
// Lover forbrukere
MyPromise.
da (funksjon ()
konsoll.logg ("operasjon vellykket");
).
fangst (funksjon ()
konsoll.logg ('feil oppstod');
);
  • Vi initialiserte løftet med navnet MyPromise og ga en tilbakeringingsfunksjon.
  • I funksjonen opprettet vi de to tallene som vi ønsker å sammenligne
  • Vi brukte if-ests-setningen for å se om tallene er like eller ikke
  • Og så inkluderte vi løftet forbrukerne
  • Hvis løfteoperasjonen er vellykket da .da vil forbruker bli påkalt og konsollen vil vise operasjonen vellykket
  • Hvis et løfte ikke er vellykket, vil du se en melding som sier "feil oppstod" på konsollen

Siden operasjonen var vellykket, ser vi Operasjon vellykket I konsollloggen.

La oss nå endre tallene som er initialisert i tilbakeringingsfunksjonen for å se om fangstfunksjonen oppdager en feil eller ikke.

// Promise initialisering
VarmyPromise = newPromise (funksjon (løs, avvis)
const num1 = 5;
const num2 = 4;
// Sammenlign to tall
if (num1 === num2)
// når operasjonen er vellykket
Løse();
annet
// Når feil kommer
avvise ();

);
// Lover forbrukere
MyPromise.
da (funksjon ()
konsoll.logg ("operasjon vellykket");
).
fangst (funksjon ()
konsoll.logg ('feil oppstod');
);

Siden tallene ikke er like nå, vil avvisning () -funksjonen bli påberopt og feilen vil bli bufret av fangstfunksjonen:

Konklusjon

Et løfte er en operasjon som er fullført i fremtiden og hjelper utviklere til å implementere asynkron kode. Løfter er å foretrekke fremfor tilbakeringingsfunksjoner ettersom løfter er mye mer renere, og forbedrer lesbarheten, og feilsøking av koden, det har bedre feilhåndtering i tillegg til flere asynkrone operasjoner blir bedre håndtert med løfter. Et løfte kan oppfylles, avviser eller det venter.

I dette innlegget gikk vi gjennom løfter i JavaScript og forklarte løfter ved hjelp av et eksempel.