Ce face Promise.resolve / Promise.reject
Promise.resolve(valoare) returnează o promisiune împlinită cu valoarea dată. Dacă valoarea este deja o promisiune, o returnează neschimbată. Promise.reject(eroare) returnează o promisiune respinsă.
Sunt utile când o funcție trebuie să returneze mereu o promisiune, chiar și atunci când are rezultatul pe loc (de exemplu din cache). Chiar și pentru o promisiune deja împlinită, then rulează abia după codul sincron curent.
Parametri
| Parametru | Descriere |
|---|---|
valoare |
Pentru resolve: valoarea (sau promisiunea) cu care se împlinește. |
eroare |
Pentru reject: motivul respingerii, de preferat un Error. |
Ce returnează
O Promise.
Exemple
Exemplul 1: Rezultat din cache sau de la server
const cache = new Map([["RON", 1], ["EUR", 4.97]]);
function curs(moneda) {
if (cache.has(moneda)) return Promise.resolve(cache.get(moneda));
return Promise.reject(new Error(`Curs necunoscut pentru ${moneda}`));
}
curs("EUR").then((v) => console.log("EUR:", v));
curs("XYZ").catch((e) => console.log(e.message));
console.log("cod sincron");
Rezultat
cod sincron
EUR: 4.97
Curs necunoscut pentru XYZ
Exemplul 2: resolve nu împachetează de două ori
const p = Promise.resolve(42);
console.log(Promise.resolve(p) === p);
console.log(await Promise.resolve(Promise.resolve("valoare")));
Rezultat
true
valoare
Greșeli frecvente
- Dai lui
rejectun text în loc deError. Pierzi stiva de apeluri, iar codul care citeștee.messageprimeșteundefined.
Comenzi înrudite
Promise / then: O promisiune reprezintă un rezultat care va veni mai târziu: o cerere la server, un fișier citit, o pauză.Promise.withResolvers: Creează o promisiune împreună cu funcțiile resolve și reject, folosibile din afara ei.async / await: Scrie cod asincron care se citește ca un cod obișnuit, de sus în jos.