Promise.allSettledKeyed()
Экспериментально: Это экспериментальная технология
Проверьте таблицу совместимости браузеров, прежде чем использовать это в продакшене.
Экспериментально: Это экспериментальная технология
Проверьте таблицу совместимости браузеров, прежде чем использовать это в продакшене.
Статический метод Promise.allSettledKeyed() похож на Promise.allSettled(), за исключением того, что вместо массивов/итерируемых объектов в качестве ввода/вывода используются объекты. Он принимает объект, где каждый собственный ключ связан с промисом, и возвращает один Promise. Этот возвращенный промис выполняется, когда все промисы ввода завершаются, возвращая объект с теми же ключами, сопоставленными с объектами, которые описывают результат соответствующего промиса.
По сравнению с Promise.allSettled(), Promise.allSettledKeyed() позволяет связывать результаты с семантически значимыми ключами, а не с произвольным порядком массива, который может быть сложен в поддержке.
Синтаксис
Promise.allSettledKeyed(object)
Параметры
-
object - Объект. Все его собственные перечисляемые свойства, независимо от того, является ли ключ строкой или символом, должны иметь значения
Promise. Эти значения ожидаются, поэтому другие thenables также разрешаются, в то время как не-thenables возвращаются как есть.
Возвращаемое значение
Объект Promise, который:
-
Уже выполнен (fulfilled), если переданный
objectне имеет собственных перечисляемых свойств. -
Асинхронно выполнен (fulfilled), когда все промисы в заданном
objectзавершены (settled) (либо выполнены, либо отклонены). Значение выполнения — это объект с теми же ключами в том же порядке, что и в заданномobject, где значение каждого свойства представляет собой объект, описывающий результат соответствующего промиса вobject, независимо от порядка завершения. Каждый объект результата имеет следующие свойства:-
status - Строка, либо
"fulfilled", либо"rejected", указывающая конечное состояние промиса. -
value - Присутствует только если
statusявляется"fulfilled". Значение, которым был выполнен промис. -
reason - Присутствует только если
statusявляется"rejected". Причина, по которой промис был отклонен.
Если переданный
objectне пуст, но не содержит ожидающих промисов, возвращаемый промис все равно выполняется асинхронно (а не синхронно). -
Описание
Метод Promise.allSettledKeyed() является одним из методов параллельной работы с промисами. Он выполняет ту же задачу, что и Promise.allSettled(). Promise.allSettledKeyed() предпочтителен, когда у вас еще нет массива промисов и/или вы немедленно деструктурируете результаты; для получения дополнительного описания см. Promise.allKeyed().
Примеры
Использование Promise.allSettledKeyed()
Метод Promise.allSettledKeyed() принимает объект и обрабатывает все его собственные перечисляемые свойства.
function delayed(value, timeout) {
return new Promise((res) => setTimeout(() => res(value), timeout));
}
const sym = Symbol();
const promises = {
a: delayed("a", 500),
// Symbol properties are processed
[sym]: delayed("symbol", 300),
// Nested properties are not processed; this whole object is treated as
// an already-resolved value and returned as-is
nested: {
b: delayed("b", 100),
},
};
const result = await Promise.allSettledKeyed(promises);
console.log(result);
// {
// a: { status: "fulfilled", value: "a" },
// [sym]: { status: "fulfilled", value: "symbol" },
// nested: { status: "fulfilled", value: { b: <Promise> } },
// }
Больше примеров, связанных с параллельным поведением, общим для Promise.allSettled() и Promise.allSettledKeyed(), см. в Promise.allSettled().
Спецификации
| Спецификация |
|---|
| Словарь Await # sec-promise.allsettledkeyed |
Совместимость с браузерами
| Настольные | Мобильные | Серверные | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
allSettledKeyed |
Нет |
Нет |
155 |
Нет |
Нет |
Нет |
155 |
Нет |
Нет |
Нет |
Нет |
Нет |
? |
? |
? |
См. также
- Полифил
Promise.allSettledKeyedвcore-js - Полифил es-shims
Promise.allSettledKeyed PromisePromise.allKeyed()Promise.allSettled()
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/allSettledKeyed