JavaScript Promise in Promise Chaining

V tej vadnici boste s pomočjo primerov spoznali obljube JavaScript in veriženje obljub.

V JavaScript je obljuba dober način za obdelavo asinhronih operacij. Uporablja se za ugotavljanje, ali je asinhrona operacija uspešno zaključena ali ne.

Obljuba ima lahko eno od treh stanj.

  • V teku
  • Izpolnjeno
  • Zavrnjeno

Obljuba se začne v stanju v teku. To pomeni, da postopek ni končan. Če je operacija uspešna, se postopek konča v izpolnjenem stanju. In če pride do napake, se postopek konča v zavrnjenem stanju.

Ko na primer s strežnikom z obljubo zahtevate podatke, bodo ti v stanju čakanja. Ko bodo podatki uspešno prispeli, bodo v izpolnjenem stanju. Če pride do napake, bo stanje zavrnjeno.

Ustvari obljubo

Za izdelavo obljubljenega predmeta uporabimo Promise()konstruktor.

 let promise = new Promise(function(resolve, reject)( //do something ));

Promise()Konstruktor ima funkcijo kot argument. Funkcija sprejema tudi dve funkciji resolve()in reject().

Če se obljuba uspešno vrne, resolve()se pokliče funkcija. In če pride do napake, se reject()funkcija pokliče.

Predpostavimo, da je spodnji program asinhroni program. Nato lahko program obdelate z uporabo obljube.

Primer 1: Program z obljubo

 const count = true; let countValue = new Promise(function (resolve, reject) ( if (count) ( resolve("There is a count value."); ) else ( reject("There is no count value"); ) )); console.log(countValue);

Izhod

 Promise (: "Obstaja vrednost štetja.")

V zgornjem programu Promiseje ustvarjen objekt, ki ima dve funkciji: resolve()in reject(). resolve()se uporablja, če je postopek uspešen in reject()se uporablja, ko pride do napake v obljubi.

Obljuba se reši, če je vrednost štetja resnična.

Delovanje obljube JavaScript

JavaScript Promise Chaining

Obljube so koristne, ko morate eno za drugo obdelati več asinhronih opravil. Za to uporabljamo veriženje obljub.

Lahko izvedete operacijo po obljuba rešiti z metodami then(), catch()in finally().

Metoda JavaScript then ()

then()Metoda se uporablja pri povratni klic, ko je obljuba uspešno izpolnjena ali rešiti.

Sintaksa then()metode je:

 promiseObject.then(onFulfilled, onRejected);

Primer 2: Privezovanje obljube z then ()

 // returns a promise let countValue = new Promise(function (resolve, reject) ( resolve('Promise resolved'); )); // executes when promise is resolved successfully countValue.then( function successValue(result) ( console.log(result); ), ) .then( function successValue1() ( console.log('You can call multiple functions this way.'); ), );

Izhod

 Obljuba je razrešena Na ta način lahko pokličete več funkcij.

V zgornjem programu se then()metoda uporablja za veriženje funkcij na obljubo. then()Metoda se imenuje, ko je obljuba uspešno rešili.

Z then()obljubo lahko povežete več metod.

Metoda catch ()

catch()Metoda se uporablja pri povratni klic, ko je obljuba zavrnjena ali če pride do napake. Na primer

 // returns a promise let countValue = new Promise(function (resolve, reject) ( reject('Promise rejected'); )); // executes when promise is resolved successfully countValue.then( function successValue(result) ( console.log(result); ), ) // executes if there is an error .catch( function errorValue(result) ( console.log(result); ) );

Izhod

 Obljuba zavrnjena

V zgornjem programu je obljuba zavrnjena. In catch()metoda se uporablja z obljubo, da bo obravnavala napako.

Delovanje verig obljub JavaScript

JavaScript Promise Versus Callback

Obljube so podobne funkcijam povratnega klica v smislu, da jih je mogoče uporabiti za obdelavo asinhronih nalog.

Funkcije povratnega klica JavaScript se lahko uporabljajo tudi za izvajanje sinhronih nalog.

Njihove razlike lahko povzamemo v naslednjih točkah:

JavaScript Promise

  1. Sintaksa je uporabniku prijazna in enostavna za branje.
  2. Lažje je obvladovanje napak.
  3. Primer:
     api (). potem (funkcija (rezultat) (vrnitev api2 ();)). nato (funkcija (rezultat2) (vrnitev api3 ();)). potem (funkcija (rezultat3) (// opravim delo)). catch ( funkcija (napaka) (// obravnava morebitne napake, ki se lahko pojavijo pred to točko));

JavaScript povratni klic

  1. Sintaksa je težko razumljiva.
  2. Obvladovanje napak je morda težko obvladati.
  3. Primer:
     api (funkcija (rezultat) (api2 (funkcija (rezultat2) (api3 (funkcija (rezultat3) (// delaj, če (napaka) (// naredi nekaj) drugo (// naredi nekaj)));));)) ;

Metoda JavaScript na koncu ()

finally()Metodo lahko uporabite tudi z obljubami. finally()Način dobi izvrši, ko je obljuba bodisi uspešno odpravili ali zavrne. Na primer

 // returns a promise let countValue = new Promise(function (resolve, reject) ( // could be resolved or rejected resolve('Promise resolved'); )); // add other blocks of code countValue.finally( function greet() ( console.log('This code is executed.'); ) );

Izhod

 Ta koda se izvede.

Metode obljube JavaScript

Objektu Promise so na voljo različne metode.

Metoda Opis
all(iterable) Čaka, da se rešijo vse obljube ali zavrnejo katere koli
allSettled(iterable) Počaka, da se vse obljube rešijo ali zavrnejo
any(iterable) Vrne vrednost obljube, takoj ko je katera od obljub izpolnjena
race(iterable) Počakajte, da se katera od obljub reši ali zavrne
reject(reason) Vrne nov objekt Promise, ki je zavrnjen iz navedenega razloga
resolve(value) Vrne nov objekt Promise, ki je razrešen z dano vrednostjo
catch() Prikaže povratni klic vodnika zavrnitve
then() Doda razrešen povratni klic upravljavca
finally() Obljubi doda vodnika

Če želite izvedeti več o obljubah v podrobnostih, obiščite JavaScript Promises.

Zanimive Članki...