Promise は非同期プログラミングのソリューションです。非同期操作のメッセージを取得できるオブジェクトです。非同期プログラミングの難しさを大幅に改善し、コールバック地獄を回避します。コールバック関数やイベントなどの従来のソリューションよりも合理的で強力です。 構文的には、Promise は非同期操作からメッセージを受信できるオブジェクトです。さまざまな非同期操作を同じ方法で処理できるように、統一されたAPIを提供します。 1. Promise インスタンスには 3 つの状態があります。 (1)保留中 (2)解決 (3)拒否 2. Promiseインスタンスには2つのプロセスがある (1)保留中>完了:解決済み (2)保留中>拒否:拒否 注意: ステータスが「購入と販売」から「その他のステータス」に変更されると、ステータスを変更することはできません。 Promise の基本的な使用法:1. Promiseオブジェクトを作成するPromise オブジェクトは非同期操作を表し、保留中 (進行中)、実行済み (成功)、拒否済み (失敗) の 3 つの状態があります。 Promise コンストラクターは、関数をパラメーターとして受け入れます。その 2 つのパラメーターは、resolve と reject です。 2. プロミス方式Promise には 5 つの一般的なメソッドがあります。 (1)それから() then メソッドは、2 つのコールバック関数をパラメータとして受け取ることができます。最初のコールバック関数は、Promise オブジェクトの状態が resolved に変わったときに呼び出され、2 番目のコールバック関数は、Promise オブジェクトの状態が declined に変わったときに呼び出されます。 2 番目のパラメータは省略できます。 promise = new Promise((resolve,reject)=>{ とする ajax('first').success(function(res){ 解決する(res); }) }) promise.then(res=>{ 新しい Promise を返します ((resovle,reject)=>{ ajax('second').success(function(res){ 解決する }) }) }).then(res=>{ 新しい Promise を返します ((resovle,reject)=>{ ajax('second').success(function(res){ 解決する }) }) }).then(res=>{ }) (2) キャッチ() このメソッドは then メソッドの 2 番目のパラメータと同等であり、拒否コールバック関数を指します。 もうひとつの機能としては、resolve コールバック関数の実行時にエラーが発生して例外がスローされた場合、実行は停止せず catch メソッドに入ります。 p.then((データ) => { console.log('解決されました',データ); },(エラー) => { console.log('拒否されました',err); } ); p.then((データ) => { console.log('解決されました',データ); }).catch((エラー) => { console.log('拒否されました',err); }); (3) すべて() all メソッドはタスクを完了して実行できます。このメソッドは配列を受け取り、配列内の各項目は Promise オブジェクトです。配列内のすべての Promise 状態が解決済みに達すると、拒否される状態がある場合、すべてのメソッドの状態が解決済みになります。すると、すべてのメソッドのステータスが拒否されます。 ジャバスクリプト promise1 = new Promise((resolve,reject)=>{ とする タイムアウトを設定します(()=>{ 解決する(1); },2000) }); promise2 = new Promise((resolve,reject)=>{ とする タイムアウトを設定します(()=>{ 解決する(2); },1000) }); promise3 = new Promise((resolve,reject)=>{ とする タイムアウトを設定します(()=>{ 解決する(3); },3000) }); Promise.all([promise1,promise2,promise3]).then(res=>{ コンソールログ(res); //結果は[1,2,3]です }) (4) 受信() 受信メソッドは all と同じで、受信したパラメータは Promise の配列ですが、all とは異なり、最初のイベントが実行されると、promise オブジェクトの値が直接返されます。 rece の実際の機能: 何かをしたいが、長い間諦めてしまったときに、この方法を使って解決することができます。 Promise.race([promise1, timeOutPromise(5000)]).then(res=>{}) (5) 最後に() finally メソッドは、Promise オブジェクトの最終状態に関係なく実行される操作を指定するために使用されます。 (このメソッドはES2018標準で導入されています) 約束 .then(結果 => {···}) .catch(エラー => {···}) .finally(() => {···}); finally メソッドのコールバック関数はパラメーターを受け入れないため、以前の Promise ステータスが満たされたか拒否されたかを知る方法はありません。 約束 .finally(() => { // ステートメント }); // プロミスと同等 。それから( 結果 => { // ステートメントは結果を返します。 }, エラー => { //ステートメントはエラーをスローします。 } ); 上記のコードでは、finally メソッドが記述されていない場合は、成功と失敗の両方に対して同じステートメントを 1 回記述する必要があります。 finallyメソッドでは、一度だけ書くだけでよい。 要約するこの記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: CSS の両端揃えを実現する div+css レイアウトの 4 つの方法の概要
>>: ウェブページ作成時のHTMLタグの使用に注意してください
現在、ますます多くのフロントエンド開発者が、元のテーブル レイアウトを xHTML + CSS に置...
<br />「良いデザインとは何か」と答える 1 万人に対して、少なくとも 1 万 1 ...
Windows 環境と Linux 環境では結果が異なります。ウィンドウズステップ 1: Maven...
この記事では、圧縮パッケージから MySQL をインストールする方法について説明します。 1. My...
問題の説明プロジェクトに取り組んでいるときに、タブ バーの切り替え効果を作成する必要がある場合があり...
この文の目的は何ですか?コードをコピーコードは次のとおりです。 <link rel="...
目次概要バーチャルドム原理実装プロセスパッチ方式sameVnode関数patchVnode関数upd...
1. /etc ディレクトリ内の、文字以外の文字で始まり、その後に文字と任意の長さのその他の文字が続...
目次defineComponent オーバーロード関数開発実務defineComponent 関数は...
導入Vue Router 、 Vue.jsの公式ルーティング マネージャーです。 Vue.jsのコア...
この記事では、Web ページのリンクを美しくするためによく使用される書き換えルールをいくつか紹介しま...
チャレンジ:文字列内の文字 &、<、>、" (二重引用符)、および &...
NextCloud コンピュータ上の任意のファイルやフォルダを共有し、NextCloud サーバーと...
目次1. 短絡や条件文の代わりにデフォルトのパラメータを使用する2. 複数の条件の処理3. スイッチ...
Keepalived のインストール: cd <keepalived_sourcecode_p...