先端原理_非同期とシングルスレッド


単スレッド
  • 単スレッドとは?
  • Javascript " "(single thread)
      "   ",             。
           ,     ,        ,         ,    。
    
      JS    JS  (JS       ,   JS    )
  • 単スレッドのメリットと発生した問題
  •   :
            ,        
    
        :
               ,            ,          。
    
             (  ),         Javascript       (     ),
                ,        。
  • 単スレッドソリューション
  • シングルスレッド(JSエンジンスレッド)がカード死しないために、「 ”この解決策
    非同期
  • フロントエンドには、非同期の操作がありますか?
  • 1、   
    2、ajax  
    3、io  
    
      :            
    
      :           ,             (    )  
  • 非同期プログラミング処理方式
  • 1、    
    2、Promise
    3、await/async  (      )
    コールバック関数 (互換性が一番いいですが、おすすめできません.)
    コールバック関数方式の最大の問題は、 コール地獄はコードの読み取りが悪く、プロジェクトの保守性が悪いことです.
    setTimeout(function (name) {
      var catList = name + ',';
    
      setTimeout(function (name) {
        catList += name + ',';
    
        setTimeout(function (name) {
          catList += name + ',';
          
        }, 1, 'Lynx');
        
      }, 1, 'Jaguar');
    
    }, 1, 'Panther');
    
                       ,    ,       
    PromiseES6 、主に解決のためです. 問題
  • の3つの状態
  • 1、pending:    ,  then()         
    2、resolved:    
    3、rejected:    
  • 基本的な使い方
      Promise    ,             
    
          :
    const p = new Promise((resolve, reject)=>{ });
    
        
    const p = new Promise(function(resolve, reject){})
    注意:
    1、パラメータ関数の はすぐ実行します.
    2、パラメータ関数の内部には、reolve()やreject()の呼び出し方法がない場合、Promiseオブジェクトの状態はそのままです.pending、後ろthen() 3、参考関数の関数体内には、主には 4、参関数の関数体内で、 resolve() 、Promiseの例の状態は pending resolved5、参関数の関数の体内で、 reject() 、Promiseの例の状態は pending rejected6、reolve()またはreject()は、一つのパラメータしか伝えられません.
  • 例示的な方法then
  •   :
    const p = new Promise((resolve, reject)=>{ });
    p.then(data=>{ }).then(data=>{ })
    
    then      :
          Promise  ,   then() Promise    
    
    1、p resolved   ,then      ,       :
    const pp = p.then(data=>{
        console.log('go');
    });
    
      pp     p resolved,       undefined
    
    2、p resolved   ,then      ,        Promise  :
    const pp = p.then(data=>{
        return '  ';
    });
    
      pp     p resolved,       '  '
    
    3、p resolved   ,then      ,       Promise  :
    const pp = p.then(data=>{
        return new Promise((resolve, reject)=>{
            reject();
        });
    });
    
      pp    rejected(      ),       undefined
    
    4、p rejected   ,then                :
    const pp = p.then(data=>{ });
    
      pp     p rejected,         p
    注意:
    1、レシオ()またはreject()メソッドを呼び出した場合、パラメータが渡されませんでした.すると、then()で伝えられた関数には受信パラメータがありません.data undefined2、Promise状態が違う限りpending、じゃ、thenで伝えます.
    関数が実行されます. 3、then()を呼び出した場合、パラメータとして関数を伝えない限り、 Promise , ,
  • 例示的な方法catch
  • 主に処理に用いますrejected
    .catch(error=>{ })    then   
    
       
    then(null, error=>{ })   then(undefined, error=>{ })
    
    catch    :
           Promise  ,              then      
    
           ,     rejected,       undefined
  • 静的方法all
  •   Promise      ,     Promise       ,      Promise  
  • 静的方法race
  • await/asyncES7 (強く推奨)
    JS非同期実現原理 JS ( JS ),
  • タスク種別