From 677c24904865937a8f8c4e4ece7d61417bed1b5f Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Sun, 23 Jan 2022 21:51:01 +0900 Subject: 2021/11/09 時点の英語版に同期 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../global_objects/promise/resolve/index.md | 115 +++++++++++---------- 1 file changed, 59 insertions(+), 56 deletions(-) (limited to 'files/ja/web/javascript') diff --git a/files/ja/web/javascript/reference/global_objects/promise/resolve/index.md b/files/ja/web/javascript/reference/global_objects/promise/resolve/index.md index 31196005df..631c599c16 100644 --- a/files/ja/web/javascript/reference/global_objects/promise/resolve/index.md +++ b/files/ja/web/javascript/reference/global_objects/promise/resolve/index.md @@ -4,82 +4,86 @@ slug: Web/JavaScript/Reference/Global_Objects/Promise/resolve tags: - ECMAScript 2015 - JavaScript - - Method + - メソッド - Promise - - Reference + - リファレンス +browser-compat: javascript.builtins.Promise.resolve translation_of: Web/JavaScript/Reference/Global_Objects/Promise/resolve --- -
{{JSRef}}
+{{JSRef}} -

Promise.resolve() メソッドは、与えられた値で解決した {{jsxref("Promise")}} オブジェクトを返します。その値がプロミスであった場合は、そのプロミスが返されます。その値が thenable (すなわち {{jsxref("Promise.then", "\"then\" メソッド")}} を持っている場合) であれば、返されるプロミスは thenable を「追跡」し、その最終的な状態を採用します。それ以外の場合は、引数で満足したプロミスが返されます。この関数は複数階層のプロミス風オブジェクト (例えば、何かで解決するプロミスで解決するプロミス) を単一の階層に平坦化します。

+**`Promise.resolve()`** メソッドは、与えられた値で解決した {{jsxref("Promise")}} オブジェクトを返します。その値がプロミスであった場合は、そのプロミスが返されます。その値が thenable (すなわち {{jsxref("Promise.then", "\"then\" メソッド")}} を持っている場合) であれば、返されるプロミスは thenable を「追跡」し、その最終的な状態を採用します。それ以外の場合は、引数で満足したプロミスが返されます。この関数は複数階層のプロミス風オブジェクト (例えば、何かで解決するプロミスで解決するプロミス) を単一の階層に平坦化します。 -

構文

+## 構文 -
Promise.resolve(value);
-
+```js +Promise.resolve(value); +``` -

引数

+### 引数 -
-
value
-
この Promise で解決する際の引数。解決するための Promise または thenable にすることもできます。
-
+- `value` + - : この `Promise` で解決する際の引数。解決するための `Promise` または thenable にすることもできます。 -

返値

+### 返値 -

与えられた値で解決された {{jsxref("Promise")}}、または value がプロミスオブジェクトであった場合、値として渡されたプロミスです。

+与えられた値で解決された {{jsxref("Promise")}}、または value がプロミスオブジェクトであった場合、値として渡されたプロミスです。 -

解説

+## 解説 -

静的な Promise.resolve 関数は、解決する Promise を返します。

+静的な `Promise.resolve` 関数は、解決する `Promise` を返します。 -

+## 例 -

静的な Promise.resolve メソッドの使用

+### 静的な Promise.resolve メソッドの使用 -
Promise.resolve('Success').then(function(value) {
+```js
+Promise.resolve('Success').then(function(value) {
   console.log(value); // "Success"
 }, function(value) {
-  // not called
+  // 呼び出されない
 });
-
+``` -

配列で解決

+### 配列で解決 -
var p = Promise.resolve([1,2,3]);
+```js
+var p = Promise.resolve([1,2,3]);
 p.then(function(v) {
   console.log(v[0]); // 1
 });
-
+``` -

別の Promise で解決

+### 別の Promise で解決 -
var original = Promise.resolve(33);
+```js
+var original = Promise.resolve(33);
 var cast = Promise.resolve(original);
 cast.then(function(value) {
-  console.log('value: ' + value);
+  console.log('value: ' + value);
 });
 console.log('original === cast ? ' + (original === cast));
 
-// ログの順番:
+// ログ(順番通り):
 // original === cast ? true
 // value: 33
-
+``` -

ログの順番が反転するのは、 then ハンドラーが非同期に呼び出されるために発生します。 then がどのように動作するのかはこちらを参照してください。

+ログの順番が反転するのは、 `then` ハンドラーが非同期に呼び出されるために発生します。 `then` がどのように動作するのかは[こちら](/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise/then#Return_value)を参照してください。 -

thenables で解決してエラーを発生させる

+### thenables で解決してエラーを発生させる -
// Resolving a thenable object
+```js
+// thenable オブジェクトを解決
 var p1 = Promise.resolve({
   then: function(onFulfill, onReject) { onFulfill('fulfilled!'); }
 });
-console.log(p1 instanceof Promise) // true, object casted to a Promise
+console.log(p1 instanceof Promise) // true、オブジェクトが Promise にキャストされた
 
 p1.then(function(v) {
     console.log(v); // "fulfilled!"
   }, function(e) {
-    // not called
+    // 呼び出されない
 });
 
 // Thenable throws before callback
@@ -91,7 +95,7 @@ var thenable = { then: function(resolve) {
 
 var p2 = Promise.resolve(thenable);
 p2.then(function(v) {
-  // not called
+  // 呼び出されない
 }, function(e) {
   console.error(e); // TypeError: Throwing
 });
@@ -107,31 +111,30 @@ var p3 = Promise.resolve(thenable);
 p3.then(function(v) {
   console.log(v); // "Resolving"
 }, function(e) {
-  // not called
+  // 呼び出されない
 });
-
+``` -

仕様書

+> **Warning:** 自分自身に解決する thenable に対して `Promise.resolve()` を呼び出さないでください。これは無限にネストしたプロミスを平坦化しようとするため、無限の再帰を引き起こします。 - - - - - - - - - - - -
仕様書
{{SpecName('ESDraft', '#sec-promise.resolve', 'Promise.resolve')}}
+```js example-bad +let thenable = { + then: (resolve, reject) => { + resolve(thenable) + } +} -

ブラウザーの互換性

+Promise.resolve(thenable) // 無限の再帰を引き起こす +``` -

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

+## 仕様書 -

関連情報

+{{Specifications}} - +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- {{jsxref("Promise")}} -- cgit v1.2.3-54-g00ecf