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 razie reject(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 bez try wokół 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 Promise wykonuje się od razu (synchronicznie), asynchroniczne jest tylko odczytanie wyniku.
  • Gotową wartość jako Promise tworzy Promise.resolve(x), błąd Promise.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()