Skip to content

Commit 891495c

Browse files
authored
Promise.any
I think Promise.any() must be in this article.
1 parent 99e59ba commit 891495c

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

1-js/11-async/05-promise-api/article.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,29 @@ Promise.race([
217217
The first promise here was fastest, so it became the result. After the first settled promise "wins the race", all further results/errors are ignored.
218218
219219
220+
## Promise.any
221+
222+
Similar to `Promise.race`, but waits only for the first fulfilled promise and gets its result. If all of the given promises are rejected, then the returned promise is rejected.
223+
224+
The syntax is:
225+
226+
```js
227+
let promise = Promise.any(iterable);
228+
```
229+
230+
For instance, here the result will be `1`:
231+
232+
```js run
233+
Promise.race([
234+
new Promise((resolve, reject) => setTimeout(() => reject(new Error("Whoops!")), 1000)),
235+
new Promise((resolve, reject) => setTimeout(() => resolve(1), 2000)),
236+
new Promise((resolve, reject) => setTimeout(() => resolve(3), 3000))
237+
]).then(alert); // 1
238+
```
239+
240+
The first promise here was fastest, but it rejecets, so the second promise became the result. After the first fulfilled promise "wins the race", all further results are ignored.
241+
242+
220243
## Promise.resolve/reject
221244
222245
Methods `Promise.resolve` and `Promise.reject` are rarely needed in modern code, because `async/await` syntax (we'll cover it [a bit later](info:async-await)) makes them somewhat obsolete.

0 commit comments

Comments
 (0)