Widely availableBest for redundant sources, race-style fallback logic, and resilient loading where the earliest success wins.

Overview

Promise.any() resolves with the first fulfilled Promise and ignores rejections unless every Promise fails. It is useful for fallback strategies where any successful result is good enough.

Browser support

Feature Desktop Mobile
Chrome
Edge
Firefox
Safari
Chrome Android
Safari iOS
85
85
79
14
85
14

The AggregateError() constructor creates AggregateError objects.

85
85
79
14
85
14

The errors data property of an AggregateError instance contains an array representing the errors that were aggregated.

85
85
79
14
85
14

Serializable objects are objects that can be serialized and later deserialized in any JavaScript environment ("realm"). This allows them to, for example, be stored on disk and later restored, or cloned with Window.structuredClone, or shared between workers using DedicatedWorkerGlobalScope.postMessage().

98
98
103
17
98
17

The Promise.any() static method takes an iterable of promises as input and returns a single Promise. This returned promise fulfills when any of the input's promises fulfills, with this first fulfillment value. It rejects when all of the input's promises reject (including when an empty iterable is passed), with an AggregateError containing an array of…

85
85
79
14
85
14
1+Supported (version) Not supported Has note Sub-feature descriptions sourced from MDN Web Docs (CC BY-SA 2.5)
Notes 1 item(s)
Implementation note
  • `AggregateError` serializes to the `Error` type, without additional properties.
Notes 1 item(s)
Implementation note
  • `AggregateError` serializes to the `Error` type, without additional properties.
Notes 1 item(s)
Implementation note
  • `AggregateError` serializes to the `AggregateError` type, with properties `name`, `message`, `cause`, and `errors`.
Notes 1 item(s)
Implementation note
  • `AggregateError` serializes to the `Error` type, without additional properties.

Syntax

JAVASCRIPT
// Fetch the resource from the fastest CDN
const resource = await Promise.any([
  fetch('https://cdn1.example.com/data'),
  fetch('https://cdn2.example.com/data'),
  fetch('https://cdn3.example.com/data'),
]);

console.log(resource); // The first successful response

Live demo

fastestrespons. Read

Multiple. sa-ba- to showprocessing., also Doneresult use..

PreviewFullscreen

Error time. Fallback

onepart that failure also, or one that success. Value..

PreviewFullscreen

allfailure case

all. Promise that failure and, AggregateError that emitlive..

PreviewFullscreen

Use cases

  • Fastest available source

    Race multiple mirrors or replicated services and keep whichever one succeeds first.

  • Graceful fallback chains

    Try several providers at once when a task should continue as long as any one source can answer.

Cautions

  • If every Promise rejects, Promise.any throws AggregateError, so error handling must account for the combined failure.
  • Use it only when any successful response is acceptable, not when every result must be inspected.

Accessibility

  • When users may notice source switching or fallback behavior, surface a stable status message instead of changing content silently.

Powered by web-features