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タグの使用に注意してください
1. Nginxの同時実行性を最適化する [root@proxy ~]# ab -n 2000 -c...
目次1. ファイルを開くパラメータの紹介2. ファイルの読み取り3. ファイルを書き込む4. 閉じる...
初心者は、いくつかの HTML タグを理解することで HTML を学習できます。この入門書は、初心者...
序文Bash には、ls、cd、mv などの重要な組み込みコマンドが多数あるほか、grep、awk、...
Mac OS 10.11 に MySQL をインストールして設定する方法を、主に写真を使って手順を簡...
今日は春節の金貨の赤い封筒のアクティビティを作りました。なかなか良い出来だと思います。皆さんと共有し...
この記事では、例を挙げて mysql show 操作について説明します。ご参考までに、詳細は以下の通...
この記事では、カルーセルアニメーションを実現するためのVueコンポーネントの具体的なコードを例として...
目次1. オプションAPIと組み合わせAPIの違い2. セットアップを具体的にどのように使用するので...
この効果は、2つのブラウザが互いにシミュレートしていることを示しています 1. シミュレートされたノ...
1. クリアフローティング法1前の親要素の高さを設定します。注: エンタープライズ開発では、可能であ...
序文Vue Router は、Vue.js の公式ルーティング マネージャーです。 Vue.js の...
IIS7 では、「URL REWRITE2」疑似静的モジュールがインストールされているかどうかを確...
まずJDKをダウンロードします。ここではjdk-8u181-linux-x64.tar.gzを使用し...
ブラウザの互換性はどんどん良くなってきています。モバイル端末は基本的にすべてWebKitベースです。...