promise淺析

10、promise

        1、Promise爲一個構造函數,可以使用他來構造函數,他是異步的
        2、這個構造函數的參數是兩個函數:resolve和reject。
        3、這兩個函數的作用是將Promise的結果從pending(等待)轉化爲resolved(已解決),
          或者從pending轉化爲rejected(失敗)
  • 方法概況:

    • 簡單來說,promise函數的內部包含着一個異步的函數,
    • 當異步函數執行完畢後,通過resolve或者reject將結果返回出去,無論是成功還是失敗
    • then的主要作用是將返回的結果獲取過來,
    • catch的主要作用是捕獲Promise對象在使用catch之前的異常

      1、實例化promise
      let p = new Promise((resolve,reject)=>{
          let flag = Math.random()>0.5 ? true:false;
      
          if(flag){
              console.log('success');
              resolve('success');
          }else{
              console.log('err');
              reject('err');
          }
      }); 
      
      2、兩個方法:then和catch
      p.then((result)=>{
          console.log(result);
      }).catch((err)=>{
          console.log(err+'err');
      });
      
      3、使用Promise封裝一個ajax請求
      function getURL(url){
          return new Promise((resolve,reject)=>{
              var req=new XMLHttpRequest();
              req.open('GET',url,true);
              req.onload=function(){
                  if (req.status==200) {
                      resolve(req.responseText);
                  }else{
                      reject(new Error(req.statusText))
                  }
              };
              req.onerror=function(){
                  reject(new Error(req.statusText));
              };
              res.send();
          })
      }
      
      4、異步加載圖片
      let preloadImage=(path)=>{
          return new Promise(function(resolve,reject){
              let img=new Image();
              img.onload=resolve;
              img.onerror=reject;
              img.src=path;
          })
      }

待補充……

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章