検索
ホームページウェブフロントエンドhtmlチュートリアルJavascript Promise 学習ノート_html/css_WEB-ITnose

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 (中国語版) からの抜粋です


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Web開発にとってHTMLタグが重要なのはなぜですか?Web開発にとってHTMLタグが重要なのはなぜですか?May 02, 2025 am 12:03 AM

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

HTMLタグと属性に一貫したコーディングスタイルを使用することの重要性を説明します。HTMLタグと属性に一貫したコーディングスタイルを使用することの重要性を説明します。May 01, 2025 am 12:01 AM

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

ブートストラップ4にマルチプロジェクトカルーセルを実装する方法は?ブートストラップ4にマルチプロジェクトカルーセルを実装する方法は?Apr 30, 2025 pm 03:24 PM

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

DeepSeekの公式Webサイトは、マウススクロールイベントの浸透の影響をどのように達成していますか?DeepSeekの公式Webサイトは、マウススクロールイベントの浸透の影響をどのように達成していますか?Apr 30, 2025 pm 03:21 PM

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

HTMLビデオの再生コントロールスタイルを変更する方法HTMLビデオの再生コントロールスタイルを変更する方法Apr 30, 2025 pm 03:18 PM

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

お使いの携帯電話でネイティブセレクトを使用することにより、どのような問題が発生しますか?お使いの携帯電話でネイティブセレクトを使用することにより、どのような問題が発生しますか?Apr 30, 2025 pm 03:15 PM

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

お使いの携帯電話でネイティブ選択を使用することの欠点は何ですか?お使いの携帯電話でネイティブ選択を使用することの欠点は何ですか?Apr 30, 2025 pm 03:12 PM

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

Three.jsとOctreeを使用して部屋で3人のローミングの衝突処理を最適化する方法は?Three.jsとOctreeを使用して部屋で3人のローミングの衝突処理を最適化する方法は?Apr 30, 2025 pm 03:09 PM

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

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

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

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン