JavaScriptのes 6にPromiseオブジェクトが追加されました.

2023 ワード

Promiseオブジェクトは以下の二つの特徴があります.
対象の状態は外部の影響を受けない.Promiseオブジェクトは非同期操作を表しています.3つの状態があります.
  • ペンディング:初期状態は成功や失敗の状態ではありません.
  • fulfilled:操作が成功したことを意味する.
  • rejeced:操作が失敗したことを意味します.
  • 状態が変わると、もう変わらなくなります.いつでもこの結果が得られます.Promiseオブジェクトの状態が変わるのは、PendingからReolvedに変化することとPendingからRejectiedに変化することしかできません.この二つの状況が発生すれば、状態が固まり、これ以上変わることなく、ずっとこの結果を維持します.変更が発生したとしても、Promiseオブジェクトに対してコールバック関数を追加すると、すぐにこの結果が得られます.イベントとは全く違って、イベントの特徴は、それを見逃してしまったら、また傍聴しても結果が得られないということです.
    Promiseの長所と短所
    Promiseオブジェクトがあると、非同期動作の流れを同期させて表現でき、入れ子の回転関数が回避されます.また、Promiseオブジェクトは、非同期動作を制御することが容易になるように、統一されたインターフェースを提供する.
    Promiseにもいくつかの欠点があります.まず、Promiseをキャンセルすることができません.新築したらすぐ実行します.途中でキャンセルできません.次に、コールバック関数を設定しないと、Promise内部で投げられたエラーは外部に反応しません.第三に、Pendingの状態では、どの段階に進行しているかが分かりません.
    Promiseの作成
    let promiseDemo = new Promise((resolve, reject) => {
      // code
      resolve('success')
      // code 
      reject('failed') 
    })
    
    promiseDemo.then((result) => {
      console.log(result)
    }, (result) => {
      console.log(result)
    })
    
    promise        ,          reject('failed')       。
              
    promise then         
    promiseDemo.then((result) => {
      console.log(result)
    }, (result) => {
      console.log(result)
    })
    
                          catch,        :
    promiseDemo.then((result) => {
      console.log(result)
    }).catch((result) => {
      console.log(result)
    })
    
       ,            
    promiseDemo.then((result) => {
      console.log(result)
    })   //       
    
    promiseDemo.catch((result) => {
      console.log(result)
    })    //        ,            
    
    promiseDemo.then(null, (result) => {
      console.log(result)
    })   //       
    Promiseコンストラクタは一つのパラメータと一つのreolve(解析)とreject(拒否)の二つのパラメータを持つリピートを含む.コールバックでいくつかの動作(例えば、非同期)が実行され、すべてが正常であれば、rejectを呼び出します.
    既に実装されているプロミセオブジェクトに対してプロミゼ.then()方法を呼び出すことができ、resoveとreject方法をフィードバックとして伝えることができます.
    promise.thenはpromiseで一番よく使われる方法です.promise.then(onFulfilled、onRejeced)
    promiseはerrorに対する処理を簡略化しました.上のコードは私達もこのように書くことができます.promise.then.catch(onFulfilled).