中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ES6中Promise怎么用

發布時間:2022-03-24 14:03:13 來源:億速云 閱讀:122 作者:小新 欄目:web開發

這篇文章主要為大家展示了“ES6中Promise怎么用”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“ES6中Promise怎么用”這篇文章吧。

Promise 基本使用

Promise 是一個構造函數,用來封裝異步操作并可以獲取其成功或失敗的結果

  • 1、 Promise 構造函數  Promise(excutor){}

  • 2、 Promise.prototype.then  有兩個參數,兩個參數都是函數,

Promise對象成功狀態執行then中第一個函數,失敗執行第二個函數

  • 3、 Promise.prototype.catch

    // 實例化
    const p = new Promise((resolve, reject) => {
      // 通過resolve,reject這兩個函數來改變Promise對象的狀態,
      // resolve會改變p的狀態為成功,reject會改變p的狀態為失敗,然后去執行then里面的方法
      // 執行異步操作,以定時器為例,定時器也是異步
      setTimeout(()=>{
        //let data = '異步執行成功';
        // resolve(data);// 調用resolve函數, p會變成一個成功的狀態,會執行then中的第一個方法
        let err = '執行失敗';
        reject(err);// 調用reject函數,p會變成一個失敗的狀態,會執行then中的第二個方法
      }, 1000)
    })
     // 成功會調用 promise 對象 then 方法
    p.then(value => {// 成功
      // console.log(value);// 控制臺打印:異步執行成功
    }, reason => {// 失敗
      console.error(reason)
    })

Promise.prototype.then 特性

    // then方法的返回結果是Promise對象,對象狀態由回調函數的執行結果決定
    const p = new Promise((resolve, reject) => {
      setTimeout(()=>{
        resolve('成功');
        reject('失敗');
      }, 1000);
    });
    // then 的返回結果是一個Promise對象,就是result也是一個Promise對象,它的狀態由函數的執行結果決定的
    const result  = p.then(value => {
      console.log(value);
      // 1.如果返回的結果是 非Promise 類型的屬性,狀態為成功,返回值return 中的值
      // 如果不寫return,函數內部不寫return返回結果是undefined,也不是Promise對象,狀態也是成功
      // return 123;
      // 2.是 promise 對象, 該對象返回的狀態就決定了then方法返回promise對象狀態
      return new Promise((resolve, reject)=>{
        // resolve('ok');// then方法返回promise對象狀態為成功
        reject('no');// then方法返回promise對象狀態為失敗
      })
      // 3.拋出錯誤  then方法返回promise對象狀態為失敗,錯誤值為拋出錯誤的值
      throw new Error('出錯了');
    }, reason => {
      console.err(reason);
    });
    console.log(result);
    // 綜上總結,then方法可以鏈式調用  可以改變回調域的現象
    p.then(value=>{}, reason=>{})
      .then(value()=>{}).then();

舉例:多個請求都返回之后,獲取其中的數據

    const p = new Promise((resolve, reject)=>{
      resolve('第一次返回成功')
    });
    p.then(value=>{
      return new Promise((resolve, reject)=>{
        resolve([value, '第二次返回成功'])
      });
    }).then(value=>{
      return new Promise((resolve, reject)=>{
        resolve([...value, '第三次返回成功'])
      });
    }).then(value=>{
      console.log(value);// 返回值為三次請求都返回成功以后的值
    });

以上是“ES6中Promise怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吴堡县| 清涧县| 新余市| 左云县| 辉县市| 驻马店市| 兴文县| 平湖市| 突泉县| 辽源市| 牡丹江市| 武穴市| 平遥县| 丽江市| 定州市| 金华市| 泾源县| 新乡县| 镇康县| 沙河市| 涞水县| 双江| 临猗县| 苏尼特右旗| 枣阳市| 茶陵县| 灌云县| 鞍山市| 普定县| 肇庆市| 扶沟县| 白城市| 诏安县| 正宁县| 祁东县| 双江| 阳朔县| 邯郸县| 武汉市| 晋州市| 惠州市|