1. 程式人生 > >ES6 promise 常用方法介紹

ES6 promise 常用方法介紹

-a 一個數 msi LV 進行 es6 就是 介紹 回放

一:promise 知識點:.then() catch() resolve()返回成功的值 reject()返回失敗的值

用法:連續調用上次請求值做下一步操作

寫法:

  1. 在第一步方法裏面new 一個Promsie方法 用變量接收 傳入值 function(resolve, reject){}

  2. 在傳值函數裏面執行請求或者得值操作,然後用相應的方法返回值 //resolve()返回成功的值 reject()返回失敗的值

  3. 在第一步方法最後返回定義的變量

用法:

  1. 利用第一步方法.then 並傳值function(data){}

  2. 其中data就是第一個函數請求來的值

  3. 如需繼續進行其余請求方法 可以繼續return 其余方法(其余方法定義同一方法定義步驟)

示例:

   1. function aa(){
    var p = new Promise(function(resovle, reject){
      //做一些請求值的異步操作,例如:
      setTimeout(function(){
          var num = Math.ceil(Math.random()*10); //比如這是請求來的值
              if(num<=5){ //滿足條件
                  resolve(num);
              }else{ //不滿足條件
                  reject('數字太大了');
             }
      })
       })
    return p;
     }

   2. aa().then(function(data){
    //這裏的data就是aa()方法得出數據
    return 接下來的方法
      }).catch(function(reason){
    //這裏是拋出異常後執行的函數,這裏reason就是拋出異常的提示信息
      })

二:promise 知識點 all():將加入all方法的所有promise對象返回的值歸集到 then方法裏面統一展現

2. 示例:

   Promise.all([aa(), bb(), cc()])
   .then(function(resulte){
    //這裏的resulte是包含了aa(), bb(), cc()返回值的一個數組
   })

三: promise 知識點 race(): 返回放入race方法裏面執行最快的方法的值,可以用於給某個方法加入請求用時

3. 示例:

如果aa()方法是某個請求方法
bb()方法用於延時提示出某個信息

   function aa() {
     var p = new Promise(function(resolve, reject){
        var img = new Image();
        img.onload = function(){
            resolve(img);
        }
        img.src = 'xxxxxx';
     });
     return p;
   }

   function bb() {
     var p = new Promise(function(resolve, reject){
        setTimeout(function(){
            reject('圖片請求超時');
        }, 5000);
     });
     return p;
   }

   Promise.race([aa(), bb()])
   .then(fucntion(resulte){
     //這裏是返回aa()方法的值
   })
   .catch(function(reason){
     //這裏返回的是bb()方法的值
   })

ES6 promise 常用方法介紹