ホームページ > 記事 > ウェブフロントエンド > es6 の Promise の詳細な紹介
Promise
Promise は、非同期操作メッセージを取得できるオブジェクトです。
特徴: オブジェクトの状態は、外部の世界 (進行中の保留中、解決済みの完了、拒否された失敗) の影響を受けません。非同期操作の結果 現在の状態を判断できます。一度状態が変化すると、再度変化することはありません (保留中から解決済み、保留中から拒否までのみ)。途中でキャンセルされる; コールバック関数がない場合、内部でスローされます。保留中の場合、エラーは外部に反映されません。現在の進行状況を知ることはできません。 then メソッドの Reject 状態のコールバック関数 (つまり then の 2 番目のパラメーター) ですが、このメソッドは前の then でエラーをキャプチャでき、同期書き込み (try/catch) に近いため、catch メソッドを使用します。このメソッドは Promise オブジェクトを返すため、 then メソッドを後で呼び出すことができます。 catch メソッドの中では、エラーもスローされることがあります。 Promise.all メソッドは、複数の Promise インスタンスを新しい Promise インスタンスにパッケージ化するために使用されます。 Promise.all メソッドは配列であってはなりませんが、Iterator インターフェイスを持つ必要があります。また、返される各メンバーは Promise インスタンスです。p1 p2 p3 ステータスが満たされる場合にのみ、p ステータスが満たされます。拒否された場合、 p は拒否されます。
Promise.race も複数になります。 Promise インスタンスは、オブジェクトの状態が変化する限り、それに応じて p の状態も変化します。最初に変更されたオブジェクトが返され、p のコールバック関数に渡されます。
Promise.resolve はオブジェクトを Promise オブジェクトに変換し、ステータスは解決されます
// 将thenable对象转为Promise对象var thenable = { then(resolve, reject) { resolve(200) } }var p = Promise.resolve(thenable) p.then((data) => { console.log(data) }) // 200
Promise.reject は Promise オブジェクトを返します、インスタンスのステータスは拒否されます。このメソッドのパラメータは拒否の理由として変更されず、後続のメソッドのパラメータになります。
// donePromise.prototype.done = function(onFulfilled, onRejected) {this.then(onFulfilled, onRejected) .catch(function(reason) { setTimeout(() => {throw reason}, 0) }); };// finallyPromise.prototype.finally = function (callback) { let P = this.constructor;return this.then( value => P.resolve(callback()).then(() => value), reason => P.resolve(callback()).then(() => { throw reason }) ); };
以上がes6 の Promise の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。