1. 定義: Promise は、抽象的な非同期処理オブジェクトと、それに対してさまざまな操作を実行するコンポーネントであり、統一されたインターフェイスを使用して非同期処理オブジェクトと非同期処理ルールを標準化します。
2. ES6 Promises 標準で定義されている API:
a) コンストラクター: new を使用してインスタンス化します。
var Promise = new Promise(function(resolve, respect) {…});
b ) インスタンス メソッド: then メソッドを使用して、成功 (解決) と失敗 (拒否) のコールバック関数を設定します。以上です。
c)静的メソッド: all()、resolve( など) )。
3. 約束のステータス。 3 つの状態: 保留中 (初期化)、履行済み、および拒否済み。それ以降に実行される関数は、一度だけ呼び出されることが保証されます。
Promise オブジェクトが解決された場合の onFulfilled の処理
Promise オブジェクトが拒否された場合の処理 onRejected
図 1. Promise 呼び出しの実行プロセス
4. Resolve メソッド:
a )静的メソッド Promise .resolve(value) は、一種の糖衣構文である新しい Promise() メソッドへのショートカットと考えることができます。 Promise.reject(error) も同様です。 thenable オブジェクト jQuery.ajax() などの Promise オブジェクトに変換します。
5. Promise の仕様では、Promise は非同期呼び出しのみを使用できると規定されています。したがって、promise.then は実際には非同期呼び出しです。
6. Promise メソッド チェーン: Promise は、任意のメソッドをメソッド チェーンとして接続できます。例:
.then(taskA).then(taskB).catch(onRejected).then(finalTask);
メソッドチェーンはメソッドを文字列化し、厳密に順序どおりに実行します。
* catch は ECMAScript 3 の予約語であるため、IE8 では使用できないことに注意してください。そのため、通常は、promise["catch"] または then が代わりに使用されます。
図 2. Promise チェーン呼び出しの実行プロセス
7. then を呼び出すたびに、新しく作成された Promise オブジェクトが返されます。1 つの Promise に対して複数の then メソッドを実行することを避け、チェーン呼び出しを使用する必要があります。代わりに法律。
8. Promise と配列: すべての Promise オブジェクトが FulFilled または Rejected になった後に Promise.all([…]) が呼び出されます。 Promise オブジェクト配列内のすべての Promise メソッドが同時に呼び出されます。
Promise.race は、いずれかのメソッドが FulFilled または Rejected になった後に呼び出されます。最初の Promise オブジェクトが Fulfilled になった後、他の Promise オブジェクトの実行はキャンセルされません。
9. Promise の then と catch:
a)Promise.then(onFulfilled, onRejected) を使用する場合、onFulfilled で例外が発生した場合、例外は onRejected でキャッチされません。
b)Promise.then(onFulfilled).catch(onRejected) の場合、then で生成された例外は .catch でキャッチできます
c) .then と .catch の間には本質的に違いはありませんはい、さまざまな機会に使用する必要があります。
10. Deferred は Promise を所有しますが、Deferred と Promise は競合関係にありません。 Deferred を使用するには、最初に Deferred オブジェクトを作成するだけでよく、いつでもsolve メソッドと拒否メソッドを呼び出すことができます。
var deferred = new Deferred();この記事は JavaScript Promise Mini Book (中国語版) からの抜粋です

htmltagsareSterenceforwebdevelovementasyStheStructureanhandhancewebpages.1)theydefineLayout、semantics、and-interactivity.2)semanticagsimprovecessibility.3)opeusofusofagscanoptimizeperformanceandensurecross-brows-compativeation。

コードの読みやすさ、保守性、効率を向上させるため、一貫したHTMLエンコーディングスタイルは重要です。 1)低ケースタグと属性を使用します。2)一貫したインデントを保持し、3)シングルまたはダブルの引用符を選択して固執する、4)プロジェクトのさまざまなスタイルの混合を避け、5)きれいなスタイルやEslintなどの自動化ツールを使用して、スタイルの一貫性を確保します。

Bootstrap4にマルチプロジェクトカルーセルを実装するソリューションBootstrap4にマルチプロジェクトカルーセルを実装するのは簡単な作業ではありません。ブートストラップですが...

マウススクロールイベントの浸透の効果を実現する方法は? Webを閲覧すると、いくつかの特別なインタラクションデザインに遭遇することがよくあります。たとえば、DeepSeekの公式ウェブサイトでは、...

HTMLビデオのデフォルトの再生コントロールスタイルは、CSSを介して直接変更することはできません。 1. JavaScriptを使用してカスタムコントロールを作成します。 2。CSSを介してこれらのコントロールを美化します。 3. video.jsやPLYRなどのライブラリを使用すると、互換性、ユーザーエクスペリエンス、パフォーマンスを検討してください。プロセスを簡素化できます。

携帯電話でネイティブセレクトを使用する際の潜在的な問題は、モバイルアプリケーションを開発するときに、ボックスを選択する必要があることがよくあります。通常、開発者...

お使いの携帯電話でネイティブ選択を使用することの欠点は何ですか?モバイルデバイスでアプリケーションを開発する場合、適切なUIコンポーネントを選択することが非常に重要です。多くの開発者...

Three.JSとOctreeを使用して、部屋でのサードパーソンローミングの衝突処理を最適化します。 3つのjsでoctreeを使用して、部屋でサードパーソンローミングを実装し、衝突を追加してください...


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 中国語版
中国語版、とても使いやすい

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ドリームウィーバー CS6
ビジュアル Web 開発ツール

Dreamweaver Mac版
ビジュアル Web 開発ツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

ホットトピック









