Milliseid Promise tüüpe tead?
sobes.tech AI
Vastus AI-lt
Node.js peamised lubaduste tüübid:
-
Põhilubadus: Esindab konteinerit tulevaste väärtuste või vigade jaoks. Sellel on kolm olekut:
pending(ootab),fulfilled(õnnestunud täitmine),rejected(tagasilükkamine veaga). Loobubnew Promise()konstruktoriga:// Põhilubaduse loomine const myPromise = new Promise((resolve, reject) => { // Asünkroonne operatsioon setTimeout(() => { const success = true; if (success) { resolve("Operatsioon edukalt lõpetatud"); } else { reject("Viga tekkis"); } }, 1000); }); -
Promise.resolve(): Loob lubaduse, mis kohe liigub
fulfilledolekusse määratud väärtusega:// Lahendatud lubaduse loomine const resolvedPromise = Promise.resolve("See on juba täidetud lubadus"); -
Promise.reject(): Loob lubaduse, mis kohe liigub
rejectedolekusse määratud vea põhjusega:// Tagasilükatud lubaduse loomine const rejectedPromise = Promise.reject(new Error("See on tagasilükatud lubadus")); -
Promise.all(): Võtab vastu lubaduste massiivi ja tagastab uue lubaduse. See uus lubadus läheb
fulfilledolekusse, kui kõik lubadused on edukalt lõpetatud. Väärtus on tulemuste massiiv, samas järjekorras nagu sisendlubadused. Kui ükskõik lubadustest ebaõnnestub, siisPromise.all()lükkab kohe tagasi esimese ebaõnnestunud lubaduse põhjusega:// Promise.all() kasutamine 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 on [1, 2, 3] }) .catch((error) => { // Vigade töötlemine }); -
Promise.allSettled(): Võtab vastu lubaduste massiivi ja tagastab uue lubaduse. See uus lubadus läheb
fulfilledvõirejectedolekusse, kui kõik lubadused on lõpetatud. Väärtus on objektide massiiv, mis kirjeldab iga lubaduse tulemust:// Promise.allSettled() kasutamine const promiseA = Promise.resolve("õnnestumine"); const promiseB = Promise.reject("viga"); Promise.allSettled([promiseA, promiseB]) .then((results) => { // results on objektide massiiv: // [{status: 'fulfilled', value: 'õnnestumine'}, {status: 'rejected', reason: 'viga'}] }); -
Promise.race(): Võtab vastu lubaduste massiivi ja tagastab uue lubaduse. See uus lubadus läheb
fulfilledvõirejectedolekusse, kui esimene lubadus massiivist, mis või siis edukalt lõpetab, või siis tagasilükkub:// Promise.race() kasutamine const promiseFast = new Promise((resolve, reject) => setTimeout(() => resolve("Ma olen kiire!"), 50)); const promiseSlow = new Promise((resolve, reject) => setTimeout(() => resolve("Ma olen aeglane..."), 500)); Promise.race([promiseFast, promiseSlow]) .then((value) => { // value on "Ma olen kiire!" }); -
Promise.any(): Võtab vastu lubaduste massiivi ja tagastab uue lubaduse. See uus lubadus läheb
fulfilledolekusse, kui esimene edukalt lõpetatud lubadus leitakse. Kui kõik lubadused on tagasilükatud, tagastabPromise.any()veaAggregateError, mis sisaldab kõiki tagasilükatud lubaduste põhjuseid. Saadaval alates Node.js 12:// Promise.any() kasutamine const promiseFail1 = Promise.reject("Viga 1"); const promiseSuccess = Promise.resolve("Õnnestumine!"); const promiseFail2 = Promise.reject("Viga 2"); Promise.any([promiseFail1, promiseSuccess, promiseFail2]) .then((value) => { // value on "Õnnestumine!" }) .catch((error) => { // Töötlemine `AggregateError`-iga, kui kõik lubadused on tagasilükatud });