この記事は編集レビューを必要としています。ぜひご協力ください。
この翻訳は不完全です。英語から この記事を翻訳 してください。
then()
メソッドはPromise
を返します。2つの引数を持ち、両方ともPromise
が成功した場合、失敗した場合のコールバック関数です。
構文
p.then(onFulfilled, onRejected); p.then(function(value) { // fulfillment }, function(reason) { // rejection });
引数
- onFulfilled
Promise
が成功したとき呼ばれるFunction
。この関数は1つの引数、value
を持ちます。- onRejected
Promise
が失敗したとき呼ばれるFunction
。この関数は1つの引数、reason
を持ちます。
説明
then
メソッドとPromise.prototype.catch()
メソッドはプロミスを返して、チェーンされます。 — compositionと呼ばれる操作。
例
then
メソッドを使う
var p1 = new Promise(function(resolve, reject) { resolve("Success!"); // or // reject ("Error!"); }); p1.then(function(value) { console.log(value); // Success! }, function(reason) { console.log(reason); // Error! });
チェーン
then
メソッドはPromise
を返すので、then
の呼び出しを簡単に繋げます。
var p2 = new Promise(function(resolve, reject) { resolve(1); }); p2.then(function(value) { console.log(value); // 1 return value + 1; }).then(function(value) { console.log(value); // 2 }); p2.then(function(value) { console.log(value); // 1 });
同様に、別の関数上にプロミスベースのAPIとともに関数を実装することでチェーンを使うこともできます。
function fetch_current_data() { // The fetch() API returns a Promise. This function // exposes a similar API, except the fulfillment // value of this function's Promise has had more // work done on it. return fetch("current-data.json").then((response) => { if (response.headers.get("content-type") != "application/json") { throw new TypeError(); } var j = response.json(); // maybe do something with j return j; // fulfillment value given to user of // fetch_current_data().then() }); }
仕様
仕様 | 状況 | コメント |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) Promise.prototype.then の定義 |
標準 | ECMA標準における初期定義 |
ECMAScript 2017 Draft (ECMA-262) Promise.prototype.then の定義 |
ドラフト |
ブラウザ実装状況
機能 | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
基本サポート | 32 | 29.0 (29.0) | 未サポート | 19 | 7.1 |
機能 | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|
基本サポート | 未サポート | 29.0 (29.0) | 未サポート | 未サポート | 8 | 32 |