Ce tipuri de Promise cunoști?
sobes.tech AI
Răspuns de la AI
Tipurile principale de promisiuni în Node.js:
-
Promise de bază: Un container pentru valori sau erori viitoare. Are trei stări:
pending(în așteptare),fulfilled(completat cu succes),rejected(respins cu eroare). Se creează cu constructorulnew Promise().// Crearea unei promisiuni de bază const myPromise = new Promise((resolve, reject) => { // Operație asincronă setTimeout(() => { const success = true; if (success) { resolve("Operațiune finalizată cu succes"); } else { reject("A apărut o eroare"); } }, 1000); }); -
Promise.resolve(): Creează o promisiune care trece imediat în starea
fulfilledcu o valoare dată.// Crearea unei promisiuni rezolvate const resolvedPromise = Promise.resolve("Aceasta este deja o promisiune îndeplinită"); -
Promise.reject(): Creează o promisiune care trece imediat în starea
rejectedcu motivul erorii.// Crearea unei promisiuni respinse const rejectedPromise = Promise.reject(new Error("Aceasta este o promisiune respinsă")); -
Promise.all(): Primește un array de promisiuni și returnează o nouă promisiune. Această nouă promisiune trece în starea
fulfilledcând toate promisiunile din array sunt finalizate cu succes. Valoarea va fi un array de rezultate în aceeași ordine ca și promisiunile de intrare. Dacă oricare promisiune este respinsă,Promise.all()este respinsă imediat cu motivul primei promisiuni respinse.// Utilizarea Promise.all() 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 va fi [1, 2, 3] }) .catch((error) => { // Tratarea erorilor }); -
Promise.allSettled(): Primește un array de promisiuni și returnează o nouă promisiune. Această nouă promisiune trece în starea
fulfilledcând toate promisiunile sunt fie finalizate cu succes (fulfilled), fie respinse (rejected). Valoarea va fi un array de obiecte care descriu rezultatul fiecărei promisiuni (stare și valoare/motiv). Spre deosebire dePromise.all(), nu se respinge imediat.// Utilizarea Promise.allSettled() const promiseA = Promise.resolve("succes"); const promiseB = Promise.reject("eroare"); Promise.allSettled([promiseA, promiseB]) .then((results) => { // results va fi un array de obiecte: // [{status: 'fulfilled', value: 'succes'}, {status: 'rejected', reason: 'eroare'}] }); -
Promise.race(): Primește un array de promisiuni și returnează o nouă promisiune. Această nouă promisiune trece în starea
fulfilledsaurejectedcu rezultatul/motivul primei promisiuni din array care s-a finalizat cu succes sau a fost respins.// Utilizarea Promise.race() const promiseFast = new Promise((resolve, reject) => setTimeout(() => resolve("Sunt rapid!"), 50)); const promiseSlow = new Promise((resolve, reject) => setTimeout(() => resolve("Sunt lent..."), 500)); Promise.race([promiseFast, promiseSlow]) .then((value) => { // value va fi "Sunt rapid!" }); -
Promise.any(): Primește un array de promisiuni și returnează o nouă promisiune. Această promisiune trece în starea
fulfilledcu valoarea primei promisiuni care s-a finalizat cu succes. Dacă toate promisiunile sunt respinse,Promise.any()returnează o eroareAggregateErrorcare conține motivele tuturor promisiunilor respinse. Disponibil începând cu Node.js 12.// Utilizarea Promise.any() const promiseFail1 = Promise.reject("Eroare 1"); const promiseSuccess = Promise.resolve("Succes!"); const promiseFail2 = Promise.reject("Eroare 2"); Promise.any([promiseFail1, promiseSuccess, promiseFail2]) .then((value) => { // value va fi "Succes!" }) .catch((error) => { // Tratarea erorii AggregateError dacă toate promisiunile sunt respinse });