Kādus Promise veidus pazīsti?
sobes.tech AI
Atbilde no AI
Galvenie Node.js solījumu veidi:
-
Pamatsolījums: Ir konteineris nākotnes vērtībām vai kļūdām. Tam ir trīs stāvokļi:
pending(gaida),fulfilled(veiksmīgi izpildīts),rejected(atsakts ar kļūdu). Izveido arnew Promise()konstruktoru:// Pamatsolījuma izveide const myPromise = new Promise((resolve, reject) => { // Asinhrona operācija setTimeout(() => { const success = true; if (success) { resolve("Operācija veiksmīgi pabeigta"); } else { reject("Radās kļūda"); } }, 1000); }); -
Promise.resolve(): Izveido solījumu, kas nekavējoties pāriet stāvoklī
fulfilledar norādīto vērtību:// Izpildīta solījuma izveide const resolvedPromise = Promise.resolve("Tas jau ir izpildīts solījums"); -
Promise.reject(): Izveido solījumu, kas nekavējoties pāriet stāvoklī
rejectedar norādītu kļūdas iemeslu:// Noraidīta solījuma izveide const rejectedPromise = Promise.reject(new Error("Tas ir noraidīts solījums")); -
Promise.all(): Pieņem solījumu masīvu un atgriež jaunu solījumu. Šis jauns solījums pāriet stāvoklī
fulfilled, kad visi solījumi veiksmīgi pabeigti. Vērtība būs rezultātu masīvs, tādā pašā secībā kā ievades solījumi. Ja kāds solījums neizdodas,Promise.all()nekavējoties noraida ar pirmā neizdarušā solījuma iemeslu:// Promise.all() lietošana const promise1 = Promise.resolve(1); const promise2 = Promise.resolve(2); const promise3 = new Promise((resolve, reject) => setTimeout(() => resolve(3), 100)); Promise.all([promise1, promise2, promise3]) .then((values) => { // values būs [1, 2, 3] }) .catch((error) => { // Kļūdu apstrāde }); -
Promise.allSettled(): Pieņem solījumu masīvu un atgriež jaunu solījumu. Šis jauns solījums pāriet stāvoklī
fulfilledvairejected, kad visi solījumi ir pabeigti. Vērtība būs objektiem masīvs, kas apraksta katra solījuma rezultātu:// Promise.allSettled() lietošana const promiseA = Promise.resolve("veiksmīgs"); const promiseB = Promise.reject("kļūda"); Promise.allSettled([promiseA, promiseB]) .then((results) => { // results būs objektiem masīvs: // [{status: 'fulfilled', value: 'veiksmīgs'}, {status: 'rejected', reason: 'kļūda'}] }); -
Promise.race(): Pieņem solījumu masīvu un atgriež jaunu solījumu. Šis jauns solījums pāriet stāvoklī
fulfilledvairejected, kad pirmais solījums no masīva, kas vai nu veiksmīgi pabeidzas, vai noraidīts:// Promise.race() lietošana const promiseFast = new Promise((resolve, reject) => setTimeout(() => resolve("Es esmu ātrs!"), 50)); const promiseSlow = new Promise((resolve, reject) => setTimeout(() => resolve("Es esmu lēns..."), 500)); Promise.race([promiseFast, promiseSlow]) .then((value) => { // value būs "Es esmu ātrs!" }); -
Promise.any(): Pieņem solījumu masīvu un atgriež jaunu solījumu. Šis jauns solījums pāriet stāvoklī
fulfilledar pirmās veiksmīgi pabeigtās solījuma vērtību. Ja visi solījumi ir noraidīti,Promise.any()atgriež kļūduAggregateError, kas satur visu noraidīto solījumu iemeslus. Pieejams no Node.js 12:// Promise.any() lietošana const promiseFail1 = Promise.reject("Kļūda 1"); const promiseSuccess = Promise.resolve("Veiksme!"); const promiseFail2 = Promise.reject("Kļūda 2"); Promise.any([promiseFail1, promiseSuccess, promiseFail2]) .then((value) => { // value būs "Veiksme!" }) .catch((error) => { // Apstrāde `AggregateError`, ja visi solījumi ir noraidīti });