Spec-Zone.ru › JavaScript

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
  • Promise
  • Promise.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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API