ES6 での Promise の用途は何ですか
es6 では、Promise は Promise オブジェクトの作成と非同期操作の実行に使用されます。構文は "const Promise = new Promise((resolve,reject)=>{...})" であり、非同期を保持します。操作のステータスは、非同期操作のさまざまな結果を表すために使用されます。
このチュートリアルの動作環境: Windows 10 システム、ECMAScript バージョン 6.0、Dell G3 コンピューター。
ES6 での Promise の用途は何ですか
Promise は ES6 で提供される非同期プログラミング ソリューションです。Promise 自体はコンストラクターです
typeof Promise // function
通常、New Promise() を開発しています。コンストラクターを呼び出して新しい Promise オブジェクトを作成するために使用されます
非同期操作用の Promise オブジェクトを作成する
Promise もコンストラクターであり、新しいキーワードを使用する必要があります。作成時に関数を受け入れるインスタンスを作成します。この関数には 2 つの関数型パラメーターがあります:
resolve
reject
Promise を作成する操作は次のようになります:
const promise = new Promise((resolve,reject)=>{...})
solve と拒否の 2 つの関数パラメーターによって、現在の Promise のステータス変更と非同期操作の結果の処理方法が決まります。どちらも、非同期操作の結果を渡すことができます。
1. オブジェクトの状態は外界の影響を受けません。
Promise オブジェクトは、保留 (進行中)、履行 (成功)、および拒否 (失敗) の 3 つの状態を持つ非同期操作です。
非同期操作の結果のみが Promise の状態を決定でき、他の操作はこの状態を変更できません
2. Promise の状態が変更されると、何も変更されません。さらに変更が加えられ、この結果はいつでも取得できます。
Promise オブジェクトの状態が変化する可能性は 2 つだけです。保留中から実行済みへ、または保留中から拒否へです。この 2 つの状況が発生する限り、ステータスは変化せず、常にこの結果が維持されます。これを解決済みと呼びます。変更がすでに行われている場合は、Promise オブジェクトにコールバック関数を追加すると、結果がすぐに得られます。これはイベントとは異なります。イベントの特徴は、聞き逃してもう一度聞いても結果が得られないことです。
Promise を使用する利点は、非同期プログラムを処理するときに、非同期操作が行われることです。 Promise は、キューに登録され、予期された順序で実行され、予期された結果を返すため、複数の非同期操作であってもチェーン呼び出しに便利に使用できます
3. Promise にはいくつかの欠点もあります。
まず、Promiseはキャンセルできません、一度作成するとすぐに実行され、途中でキャンセルすることはできません。次に、コールバック関数を設定しない場合、Promise によって内部的にスローされたエラーは外部には反映されません。第三に、保留状態の場合、現在の進行状況がどの段階にあるのか (開始したばかりか、完了間近か) を知ることはできません。
いわゆる Promise は、単にコンテナであり、その中に何かが入っています。将来まで終了しない イベント (通常は非同期操作) の結果。
ES6 では、Promise オブジェクトが Promise インスタンスの生成に使用されるコンストラクターであると規定されています。
次のコードは Promise インスタンスを作成します。
const promise = new Promise(function(resolve, reject) { // ... some code if (/* 异步操作成功 */){ resolve(value); } else { reject(error); } });
Promise コンストラクターは関数をパラメーターとして受け取ります。関数の 2 つのパラメーターは、resolve と拒否です。これらは JavaScript エンジンによって提供される 2 つの関数であり、自分でデプロイする必要はありません。
resolve 関数の機能は、Promise オブジェクトのステータスを「未完了」から「成功」(つまり、保留中から解決済み) に変更することです。非同期操作が成功したときに呼び出されます。非同期操作の結果はパラメーターとして渡されます。reject 関数の機能は、Promise オブジェクトの状態を「未完了」から「失敗」(つまり、保留中から拒否された) に変更することであり、呼び出されます。非同期操作が失敗し、非同期操作によって報告されたエラーが である場合、パラメーターとして渡されます。
Promise インスタンスが生成された後、 then メソッドを使用して、解決された状態と拒否された状態のそれぞれに対するコールバック関数を指定できます。
promise.then(function(value) { // success }, function(error) { // failure });
then メソッドは 2 つのコールバック関数をパラメータとして受け入れることができます。最初のコールバック関数は、Promise オブジェクトの状態が解決されたときに呼び出され、2 番目のコールバック関数は、Promise オブジェクトの状態が拒否されたときに呼び出されます。このうち、2番目の機能はオプションであり、設ける必要はない。どちらの関数も、Promise オブジェクトによって渡された値をパラメーターとして受け入れます。
【関連する推奨事項: JavaScript ビデオ チュートリアル 、Web フロントエンド ]
以上がES6 での Promise の用途は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

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

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









非同期はes7です。 async と await は ES7 に新しく追加されたもので、非同期操作のソリューションです。async/await は co モジュールとジェネレーター関数の糖衣構文と言え、より明確なセマンティクスで JS 非同期コードを解決します。名前が示すように、async は「非同期」を意味します。async は関数が非同期であることを宣言するために使用されます。async と await の間には厳密な規則があります。両方を互いに分離することはできず、await は async 関数内でのみ記述できます。

ES6 では、配列オブジェクトの reverse() メソッドを使用して、配列の反転を実現できます。このメソッドは、配列内の要素の順序を逆にして、最後の要素を最初に、最初の要素を最後に配置するために使用されます。構文「array」 。逆行する()"。 reverse() メソッドは元の配列を変更します。変更したくない場合は、拡張演算子 "..." とともに使用する必要があり、構文は "[...array].reverse() 」。

ブラウザの互換性のため。 ES6 は JS の新しい仕様として、多くの新しい構文と API を追加していますが、最新のブラウザーは ES6 の新機能を高度にサポートしていないため、ES6 コードを ES5 コードに変換する必要があります。 WeChat Web 開発者ツールでは、デフォルトで babel が使用され、開発者の ES6 構文コードを 3 つの端末すべてで適切にサポートされる ES5 コードに変換し、開発者がさまざまな環境によって引き起こされる開発上の問題を解決できるようにします。プロジェクト内でのみ設定して確認するだけです。 「ES6~ES5」オプション。

手順: 1. 構文 "newA=new Set(a); newB=new Set(b);" を使用して、2 つの配列をそれぞれセット型に変換します; 2. has() と filter() を使用して差分セットを検索します、構文 " new Set([...newA].filter(x =>!newB.has(x)))" では、差分セット要素がセット コレクションに含まれて返されます。 3. 配列を使用します。 from セットを配列に変換するタイプ、構文は「Array.from(collection)」です。

es5 では、for ステートメントと IndexOf() 関数を使用して配列の重複排除を実現できます。構文 "for(i=0;i<配列長;i++){a=newArr.indexOf(arr[i]);if( a== -1){...}}」。 es6 では、スプレッド演算子 Array.from() および Set を使用して重複を削除できます。まず配列を Set オブジェクトに変換して重複を削除してから、スプレッド演算子または Array.from() 関数を使用する必要があります。 Set オブジェクトを配列に変換してグループ化するだけです。

es6 では、一時的なデッド ゾーンは構文エラーであり、ブロックを閉じたスコープにする let および const コマンドを指します。コード ブロック内では、let/const コマンドを使用して変数が宣言される前に、変数は使用できず、変数が宣言される前は変数の「デッド ゾーン」に属します。これは構文上「一時デッド ゾーン」と呼ばれます。 ES6 では、一時的なデッド ゾーンや let ステートメントや const ステートメントでは変数のプロモーションが発生しないことを規定しています。これは主に実行時エラーを減らし、変数が宣言される前に使用されて予期しない動作が発生するのを防ぐためです。

いいえ、require は CommonJS 仕様のモジュール構文であり、es6 仕様のモジュール構文は import です。 require は実行時にロードされ、import はコンパイル時にロードされます。require はコード内のどこにでも記述できます。import はファイルの先頭にのみ記述でき、条件文や関数スコープでは使用できません。モジュール属性は導入されるだけです。 require を実行した場合、そのためパフォーマンスは比較的低くなりますが、インポート コンパイル中に導入されたモジュールのプロパティのパフォーマンスはわずかに高くなります。

地図は注文済みです。 ES6 のマップ タイプは、多くのキーと値のペアを格納する順序付きリストです。キー名と対応する値はすべてのデータ型をサポートします。キー名の等価性は、「Objext.is()」メソッドを呼び出すことによって決定されます。 , したがって、数字の 5 と文字列「5」は 2 つのタイプとして判断され、プログラム内で 2 つの独立したキーとして現れることができます。
