Promise
new Promise((resolve, reject) => { … })
Obiekt dla wyniku operacji asynchronicznej (pobranie danych, timer). Najpierw jest oczekujący, potem zostaje spełniony z wartością albo odrzucony z błędem – i potem już się nie zmienia. Wynik odczytuje się przez await albo then().
Parametry
- (resolve, reject) => … – funkcja wykonywana od razu; przy sukcesie wywołuje
resolve(value), w przeciwnym raziereject(error).
Wartość zwracana
Obiekt Promise.
Przykłady
const wait = (ms, value) => new Promise((done) => setTimeout(() => done(value), ms));
console.log('1. Start');
const p = wait(50, 'dane pobrane');
console.log('2. Promise utworzony');
console.log('3.', await p);
console.log(await Promise.resolve(42), await wait(10));
Wynik:
1. Start 2. Promise utworzony 3. dane pobrane 42 undefined
Odrzucenie i obsługa błędu:
const fail = (ms, message) => new Promise((_, reject) => setTimeout(() => reject(new Error(message)), ms));
try {
await fail(20, 'Serwer nie odpowiada');
} catch (e) {
console.log('Błąd:', e.message);
}
fail(10, 'kolejny błąd').catch((e) => console.log('catch():', e.message));
await new Promise((r) => setTimeout(r, 30));
Wynik:
Błąd: Serwer nie odpowiada catch(): kolejny błąd
Na co uważać
- Odrzucony Promise bez
catch()(albo beztrywokóławait) wypisuje w konsoli „Uncaught (in promise)”, a w Node.js kończy proces. Każdy łańcuch Promise zakończ obsługą błędów. - Funkcja przekazana do
new Promisewykonuje się od razu (synchronicznie), asynchroniczne jest tylko odczytanie wyniku. - Gotową wartość jako Promise tworzy
Promise.resolve(x), błądPromise.reject(e).
Obsługa w przeglądarkach
Baseline – szeroko dostępne: działa we wszystkich popularnych przeglądarkach, i to od dawna (najpóźniej od 2015 roku). Od wersji: Chrome 32, Firefox 29, Safari 8; Node.js 0.12.0. Stan: październik 2026 (MDN browser-compat-data).
Zobacz też:
Promise.prototype.then()
await
async function
Promise.all()