From e784f81665d6d497f98487403d76cc8020943ee0 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Fri, 27 Aug 2021 00:02:37 +0900 Subject: Global_Objects/Promise/allSettled を更新 (#2234) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../global_objects/promise/allsettled/index.html | 92 -------------------- .../global_objects/promise/allsettled/index.md | 99 ++++++++++++++++++++++ 2 files changed, 99 insertions(+), 92 deletions(-) delete mode 100644 files/ja/web/javascript/reference/global_objects/promise/allsettled/index.html create mode 100644 files/ja/web/javascript/reference/global_objects/promise/allsettled/index.md diff --git a/files/ja/web/javascript/reference/global_objects/promise/allsettled/index.html b/files/ja/web/javascript/reference/global_objects/promise/allsettled/index.html deleted file mode 100644 index 117abc02c9..0000000000 --- a/files/ja/web/javascript/reference/global_objects/promise/allsettled/index.html +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: Promise.allSettled() -slug: Web/JavaScript/Reference/Global_Objects/Promise/allSettled -tags: - - JavaScript - - Method - - Promise - - Reference - - allSettled - - asynchronous - - プロミス - - メソッド - - 非同期 -translation_of: Web/JavaScript/Reference/Global_Objects/Promise/allSettled ---- -
{{JSRef}}
- -

Promise.allSettled() メソッドは、与えられたすべてのプロミスが満足したか拒否された後に、それぞれのプロミスの結果を記述した配列オブジェクトで解決されるプロミスを返します。

- -

一般的には、複数の非同期タスクがあり、お互いに依存せずに正常に完了する場合や、各プロミスの結果を常に知りたい場合に使用されます。

- -

これと比較して、 {{jsxref("Promise.all()")}} で返されるプロミスは、タスクがお互いに依存している場合や、タスクのいずれかが拒否されたときにすぐに拒否したい場合にはより適切かもしれません。

- -
{{EmbedInteractiveExample("pages/js/promise-allsettled.html")}}
- -

構文

- -
Promise.allSettled(iterable);
- -

引数

- -
-
iterable
-
{{jsxref("Array")}} などの反復可能オブジェクトで、それぞれの要素が Promise であるものです。
-
- -

返値

- -

待ち状態の {{jsxref("Promise")}} で、指定されたプロミスの集合に含まれるすべてのプロミスが、正常に解決されるか拒否されるかのどちらかで完了すると、非同期に解決されます。その際、返されたプロミスのハンドラーには、元のプロミスの集合に含まれるの各プロミスの結果を含む配列が入力として渡されます。

- -

ただし、空の反復可能オブジェクトが引数として渡された場合に限りPromise.allSettled() は空の配列として解決済みの Promise オブジェクトを返します。

- -

出力されるそれぞれのオブジェクトには、 status の文字列が存在します。 status が fulfilled であれば、 value が存在します。 status が rejected であれば、 reason が存在します。 value (または reason) はそれぞれのプロミスがどの値で解決 (または拒否) されたかを反映します。

- -

- -

Promise.allSettled の使用

- -
Promise.allSettled([
-  Promise.resolve(33),
-  new Promise(resolve => setTimeout(() => resolve(66), 0)),
-  99,
-  Promise.reject(new Error('an error'))
-])
-.then(values => console.log(values));
-
-// [
-//   {status: "fulfilled", value: 33},
-//   {status: "fulfilled", value: 66},
-//   {status: "fulfilled", value: 99},
-//   {status: "rejected",  reason: Error: an error}
-// ]
-
- -

仕様書

- - - - - - - - - - - - -
仕様書
{{SpecName('ESDraft', '#sec-promise.allsettled', 'Promise.allSettled')}}
- -

ブラウザーの互換性

- -

{{Compat("javascript.builtins.Promise.allSettled")}}

- -

関連情報

- - diff --git a/files/ja/web/javascript/reference/global_objects/promise/allsettled/index.md b/files/ja/web/javascript/reference/global_objects/promise/allsettled/index.md new file mode 100644 index 0000000000..e96b5fe08e --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/promise/allsettled/index.md @@ -0,0 +1,99 @@ +--- +title: Promise.allSettled() +slug: Web/JavaScript/Reference/Global_Objects/Promise/allSettled +tags: + - JavaScript + - メソッド + - プロミス + - Reference + - allSettled + - 非同期 + - Polyfill +browser-compat: javascript.builtins.Promise.allSettled +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/allSettled +--- +{{JSRef}} + +**`Promise.allSettled()`** メソッドは、与えられたすべてのプロミスが履行されたか拒否された後に、それぞれのプロミスの結果を記述した配列オブジェクトで解決されるプロミスを返します。 + +一般的には、複数の非同期タスクがあり、お互いに依存せずに正常に完了する場合や、各プロミスの結果を常に知りたい場合に使用されます。 + +これに対して、 {{jsxref("Promise.all()")}} で返されるプロミスは、タスクがお互いに依存している場合や、タスクのいずれかが拒否されたときにすぐに拒否したい場合にはより適切かもしれません。 + +{{EmbedInteractiveExample("pages/js/promise-allsettled.html")}} + +## 構文 + +```js +Promise.allSettled(iterable); +``` + +### 引数 + +- `iterable` + - : {{jsxref("Array")}} などの[反復可能](/ja/docs/Web/JavaScript/Reference/Iteration_protocols)オブジェクトで、それぞれの要素が `Promise` であるものです。 + +### 返値 + +**待ち状態**の {{jsxref("Promise")}} で、指定されたプロミスの集合に含まれるすべてのプロミスが、正常に履行されるか拒否されるかのどちらかで完了すると、**非同期に**解決されます。その際、返されたプロミスのハンドラーには、元のプロミスの集合に含まれるの各プロミスの結果を含む配列が入力として渡されます。 + +ただし、空の反復可能オブジェクトが引数として渡された**場合に限り**、 `Promise.allSettled()` は空の配列として**解決済みの** `Promise` オブジェクトを返します。 + +出力されるそれぞれのオブジェクトには、 `status` の文字列が存在します。 status が `fulfilled` (履行) であれば、 `value` が存在します。 status が `rejected` (拒否) であれば、 `reason` が存在します。 value (または reason) はそれぞれのプロミスがどの値で履行 (または拒否) されたかを反映します。 + +## 例 + +### Promise.allSettled の使用 + +#### {{JSxRef("Promise.then", "Promise.prototype.then()")}} +```js +Promise.allSettled([ + Promise.resolve(33), + new Promise(resolve => setTimeout(() => resolve(66), 0)), + 99, + Promise.reject(new Error('an error')) +]) +.then(values => console.log(values)); + +// [ +// {status: "fulfilled", value: 33}, +// {status: "fulfilled", value: 66}, +// {status: "fulfilled", value: 99}, +// {status: "rejected", reason: Error: an error} +// ] +``` + +#### {{jsxref("Operators/await", "await")}} +```js +const values = await Promise.allSettled([ + Promise.resolve(33), + new Promise(resolve => setTimeout(() => resolve(66), 0)), + 99, + Promise.reject(new Error('an error')) +]) +console.log(values) + +// [ +// {status: "fulfilled", value: 33}, +// {status: "fulfilled", value: 66}, +// {status: "fulfilled", value: 99}, +// {status: "rejected", reason: Error: an error} +// ] +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- `Promise.allSettled` のポリフィルが [`core-js`](https://github.com/zloirock/core-js#ecmascript-promise) で利用できます +- [Promises](/ja/docs/Archive/Add-ons/Techniques/Promises) +- [プロミスの使用](/ja/docs/Web/JavaScript/Guide/Using_promises) +- [プロミスを使った行儀のよい非同期のプログラミング](/ja/docs/Learn/JavaScript/Asynchronous/Promises) +- {{jsxref("Promise")}} +- {{jsxref("Promise.all()")}} -- cgit v1.2.3-54-g00ecf