Koje vrste Promise poznaješ?
sobes.tech АИ
Одговор од АИ
Glavne vrste obećanja u Node.js:
-
Basic Promise: Kontejner za buduće vrijednosti ili pogreške. Ima tri stanja:
pending(na čekanju),fulfilled(uspješno završeno),rejected(odbijeno pogreškom). Kreira se pomoću konstruktoranew Promise().// Kreiranje osnovnog obećanja const myPromise = new Promise((resolve, reject) => { // Asinkrona operacija setTimeout(() => { const success = true; if (success) { resolve("Operacija uspješno završena"); } else { reject("Došlo je do pogreške"); } }, 1000); }); -
Promise.resolve(): Kreira obećanje koje odmah prelazi u stanje
fulfilleds danom vrijednošću.// Kreiranje riješenog obećanja const resolvedPromise = Promise.resolve("Ovo je već ispunjeno obećanje"); -
Promise.reject(): Kreira obećanje koje odmah prelazi u stanje
rejecteds razlogom pogreške.// Kreiranje odbačenog obećanja const rejectedPromise = Promise.reject(new Error("Ovo je odbačeno obećanje")); -
Promise.all(): Prima niz obećanja i vraća novo obećanje. Ovo novo obećanje prelazi u stanje
fulfilledkada sva obećanja u nizu uspješno završe. Vrijednost će biti niz rezultata u istom redoslijedu kao ulazna obećanja. Ako bilo koje obećanje bude odbačeno,Promise.all()se odmah odobrava s razlogom prvog odbačenog obećanja.// Korištenje 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 će biti [1, 2, 3] }) .catch((error) => { // Obrada pogrešaka }); -
Promise.allSettled(): Prima niz obećanja i vraća novo obećanje. Ovo novo obećanje prelazi u stanje
fulfilledkada sva obećanja budu uspješno završena ili odbačena. Vrijednost će biti niz objekata koji opisuju rezultat svakog obećanja (stanje i vrijednost/razlog). Za razliku odPromise.all(), ne odobrava se odmah.// Korištenje Promise.allSettled() const promiseA = Promise.resolve("uspjeh"); const promiseB = Promise.reject("pogreška"); Promise.allSettled([promiseA, promiseB]) .then((results) => { // results će biti niz objekata: // [{status: 'fulfilled', value: 'uspjeh'}, {status: 'rejected', reason: 'pogreška'}] }); -
Promise.race(): Prima niz obećanja i vraća novo obećanje. Ovo novo obećanje prelazi u stanje
fulfilledilirejecteds rezultatom/razlogom prvog obećanja koje je uspješno završilo ili odbačeno.// Korištenje Promise.race() const promiseFast = new Promise((resolve, reject) => setTimeout(() => resolve("Ja sam brz!"), 50)); const promiseSlow = new Promise((resolve, reject) => setTimeout(() => resolve("Ja sam spor..."), 500)); Promise.race([promiseFast, promiseSlow]) .then((value) => { // value će biti "Ja sam brz!" }); -
Promise.any(): Prima niz obećanja i vraća novo obećanje. Ovo novo obećanje prelazi u stanje
fulfilleds vrijednošću prvog obećanja koje je uspješno završilo. Ako sva obećanja budu odbačena,Promise.any()vraća pogreškuAggregateErrorkoja sadrži razloge svih odbačenih obećanja. Dostupno od Node.js 12.// Korištenje Promise.any() const promiseFail1 = Promise.reject("Pogreška 1"); const promiseSuccess = Promise.resolve("Uspjeh!"); const promiseFail2 = Promise.reject("Pogreška 2"); Promise.any([promiseFail1, promiseSuccess, promiseFail2]) .then((value) => { // value će biti "Uspjeh!" }) .catch((error) => { // Obrada AggregateError ako su sva obećanja odbačena });