中文在线免费看视频_国产成人精品亚洲日本在线观看_亚洲精品第一综合99久久_国产亚洲精品日韩综合网

當前位置: 首頁 / 技術(shù)干貨 / 正文
前端技術(shù)干貨-Promise的相關(guān)介紹

2023-03-28

promise  ■ 失敗

前端技術(shù)干貨-Promise的相關(guān)介紹

  ●Promise

  是一種異步代碼的封裝方案

  因為換了一種封裝方案, 不需要安裝回調(diào)函數(shù)的方式去調(diào)用, 需要按照 promise 的形式去調(diào)用

  注意 promise 不是解決 異步問題的, 而是解決回調(diào)地獄問題的

  ●認識 Promise

  ○promise 的三種狀態(tài)

  ■持續(xù): pending

  ■成功: fulfilled

  ■失敗: rejected

  ○promise 的兩種轉(zhuǎn)換

  ■從持續(xù)轉(zhuǎn)為成功

  ■從持續(xù)轉(zhuǎn)為失敗

  ○promise 的基礎(chǔ)語法

  ■ES6 內(nèi)置構(gòu)造函數(shù)

  ○promise 的語法

  ■const p = new Promise(function () {})

  ○promise 對象可以觸發(fā)的兩個方法

  ■p.then(函數(shù)); 成功時執(zhí)行

  ■p.catch(函數(shù)); 失敗時執(zhí)行

  ●promise 封裝一個異步函數(shù)

  const p = new Promise(function (resolve, reject) {

  // resolve: 是一個形參, 名字自定義, 值是一個函數(shù), 當你調(diào)用的時候, 會把當前 promise 的狀態(tài)轉(zhuǎn)換為 成功

  // reject: 是一個形參, 名字自定義, 值是一個函數(shù), 當你調(diào)用的時候, 會把當前 promise 的狀態(tài)轉(zhuǎn)換為 失敗

  // resolve 和 reject 調(diào)用時可以傳遞一個參數(shù), 這個參數(shù)會被傳遞給對應(yīng)的 then catch

  const timer = Math.ceil(Math.random() * 3000) + 2000;

  setTimeout(() => {

  if (timer > 3500) {

  console.log("買水失敗, 耗時 ", timer);

  reject("獎勵一個bug");

  } else {

  console.log("買水成功, 耗時: ", timer);

  resolve("送你十個bug");

  }

  }, timer);

  });

  p.then(function (address) {

  console.log("班長買水成功咯~~~", address);

  });

  p.catch(function (address) {

  console.log("班長買水失敗咯~~~", address);

  });

  封裝 promise 為函數(shù)

  function fn() {

  const p = new Promise(function (resolve, reject) {

  const timer = Math.ceil(Math.random() * 3000) + 2000;

  setTimeout(() => {

  if (timer > 3500) {

  reject("班長買水失敗");

  } else {

  resolve("班長買水成功");

  }

  }, timer);

  });

  return p;

  }

  // 將來在使用的時候 res 得到的是 promise 的實例對象 p

  const res = fn();

  res.then(function (type) {

  // 這個函數(shù)執(zhí)行代碼 promise 狀態(tài)為成功狀態(tài)!!!

  console.log("因為", type, "謝謝班長, 我準備了20個bug, 回饋給你");

  });

  res.catch(function (type) {

  // 這個函數(shù)執(zhí)行代碼

  console.log("因為", type, "謝謝班長, 我準備了800個bug, 開心死你");

  });

  ●promise 的鏈式調(diào)用

  fn()

  .then(function (type) {

  // 這個函數(shù)執(zhí)行代碼 promise 狀態(tài)為成功狀態(tài)!!!

  console.log("因為", type, "謝謝班長, 我準備了20個bug, 回饋給你");

  })

  .catch(function (type) {

  // 這個函數(shù)執(zhí)行代碼

  console.log("因為", type, "謝謝班長, 我準備了800個bug, 開心死你");

  });

  ●promise 的調(diào)用方式補充

  ○如果你在第一個 then 里面返回(return) 一個新的 promise 對象的時候

  ○可以在第一個 then 后面, 繼續(xù)第二個 then

  fn()

  .then(function (type) {

  console.log(

  "第一次: 因為",

  type,

  "謝謝班長, 我準備了20個bug, 回饋給你"

  );

  return fn();

  })

  .then(function (type) {

  console.log(

  "第二次: 因為",

  type,

  "謝謝班長, 我準備了20個bug, 回饋給你"

  );

  return fn();

  })

  .then(function (type) {

  console.log(

  "第三次: 因為",

  type,

  "謝謝班長, 我準備了20個bug, 回饋給你"

  );

  return fn();

  })

  .catch(function (type) {

  console.log("因為", type, "謝謝班長, 我準備了800個bug, 開心死你");

  });

  ●promise 的其他方法

  ●Promise 實例的 finally 方法

  ○不管promise是成功還是失敗, 只要 promise 執(zhí)行結(jié)束, 我都會執(zhí)行

  fn()

  .then(function (res) {

  console.log("成功");

  })

  .catch(function (res) {

  console.log("失敗");

  })

  .finally(function () {

  console.log(

  "不管promise是成功還是失敗, 只要 promise 執(zhí)行結(jié)束, 我都會執(zhí)行"

  );

  });

  Promise 本身還有一些方法

  ○all:

  ■作用: 可以同時觸發(fā)多個 promise 行為

  ●只有所有的 promise 都成功的時候, all 才算成功

  ●只要任何一個 promise 失敗的時候, all 就算失敗了

  ■語法: Promise.all([多個 promise])

  ○race:

  ■作用: 可以同時觸發(fā)多個 promise 行為

  ●按照速度計算, 當?shù)谝粋€結(jié)束的時候就結(jié)束了, 成功或失敗取決于第一個執(zhí)行結(jié)束的 promise

  ■語法: Promise.race([多個 promise])

  ○allSettled

  ■作用: 可以同時觸發(fā)多個 Promise 行為

  ●不管多個成功還是失敗都會觸發(fā)

  ●會在結(jié)果內(nèi)以數(shù)組的形式給你返回 每一個 promise 行為的成功還是失敗

  ■語法: Promise.allSettled([多個 promise])

  ○resolve

  ■作用: 強制返回一個成功狀態(tài)的 promise 對象

  ○reject

  ■作用: 強制返回一個失敗狀態(tài)的 promise 對象

  // 1. all

  Promise.all([fn(), fn(), fn()])

  .then(function () {

  console.log("所有的 參數(shù) 都返回 成功狀態(tài)");

  })

  .catch(function () {

  console.log("這些參數(shù)中, 有一個 為 失敗狀態(tài)");

  });

  // 2. race

  Promise.race([fn(), fn(), fn()])

  .then(function () {

  console.log("速度最快的那個執(zhí)行完畢, 并且是成功狀態(tài)時 執(zhí)行");

  })

  .catch(function () {

  console.log("速度最快的那個執(zhí)行完畢, 并且是失敗狀態(tài)時 執(zhí)行");

  });

  // 3. allSettled

  Promise.allSettled([fn(), fn(), fn()])

  .then(function (res) {

  console.log(res);

  })

  .catch(function (res) {

  console.log(res);

  });

  // 4. resolve

  Promise.resolve()

  .then(function (res) {

  console.log("成功");

  })

  .catch(function (res) {

  console.log("失敗");

  });

  // 5. reject

  Promise.reject()

  .then(function (res) {

  console.log("成功");

  })

  .catch(function (res) {

  console.log("失敗");

  });

好程序員公眾號

  • · 剖析行業(yè)發(fā)展趨勢
  • · 匯聚企業(yè)項目源碼

好程序員開班動態(tài)

More+
  • HTML5大前端 <高端班>

    開班時間:2021-04-12(深圳)

    開班盛況

    開班時間:2021-05-17(北京)

    開班盛況
  • 大數(shù)據(jù)+人工智能 <高端班>

    開班時間:2021-03-22(杭州)

    開班盛況

    開班時間:2021-04-26(北京)

    開班盛況
  • JavaEE分布式開發(fā) <高端班>

    開班時間:2021-05-10(北京)

    開班盛況

    開班時間:2021-02-22(北京)

    開班盛況
  • Python人工智能+數(shù)據(jù)分析 <高端班>

    開班時間:2021-07-12(北京)

    預(yù)約報名

    開班時間:2020-09-21(上海)

    開班盛況
  • 云計算開發(fā) <高端班>

    開班時間:2021-07-12(北京)

    預(yù)約報名

    開班時間:2019-07-22(北京)

    開班盛況
IT培訓(xùn)IT培訓(xùn)
在線咨詢
IT培訓(xùn)IT培訓(xùn)
試聽
IT培訓(xùn)IT培訓(xùn)
入學(xué)教程
IT培訓(xùn)IT培訓(xùn)
立即報名
IT培訓(xùn)

Copyright 2011-2023 北京千鋒互聯(lián)科技有限公司 .All Right 京ICP備12003911號-5 京公網(wǎng)安備 11010802035720號

中文在线免费看视频_国产成人精品亚洲日本在线观看_亚洲精品第一综合99久久_国产亚洲精品日韩综合网

            欧美色图在线观看| 欧美在线观看18| 国产精品久久久久一区二区三区共| 成人激情开心网| 亚洲综合色噜噜狠狠| 欧美成人r级一区二区三区| 成人一区在线观看| 舔着乳尖日韩一区| 国产精品久久毛片| 日韩写真欧美这视频| 成人性视频网站| 日韩国产在线观看一区| 国产精品丝袜在线| 欧美一区二区不卡视频| 99久久综合精品| 麻豆国产91在线播放| 日韩伦理免费电影| 久久综合色一综合色88| 91成人网在线| 大胆欧美人体老妇| 久久不见久久见中文字幕免费| 亚洲伦理在线精品| 久久久亚洲欧洲日产国码αv| 欧美日韩高清影院| 色综合久久九月婷婷色综合| 国产专区综合网| 奇米影视在线99精品| 亚洲乱码一区二区三区在线观看| 久久久91精品国产一区二区三区| 在线播放欧美女士性生活| 91一区二区三区在线播放| 国产东北露脸精品视频| 麻豆成人综合网| 日韩精品乱码av一区二区| 一区二区视频在线看| 久久精品一区二区三区四区| 欧美一级爆毛片| 91精品国产综合久久精品app| 日本久久精品电影| av电影在线观看一区| 高清不卡在线观看av| 国产麻豆日韩欧美久久| 美女网站视频久久| 日韩精品电影一区亚洲| 亚洲成a人在线观看| 亚洲午夜在线视频| 亚洲国产日韩精品| 亚洲伊人伊色伊影伊综合网| 亚洲欧美另类久久久精品2019| 国产精品久久久99| 国产精品免费av| 国产精品每日更新在线播放网址 | 亚洲综合一区在线| 亚洲欧美日韩一区二区| 一区二区三区四区五区视频在线观看 | 亚洲成人第一页| 亚洲在线视频免费观看| 亚洲成人精品一区二区| 亚洲亚洲人成综合网络| 天堂成人国产精品一区| 日韩精品乱码免费| 久久精品99国产精品日本| 精品一区二区三区在线观看| 日本午夜精品视频在线观看| 日韩成人精品在线| 国产中文一区二区三区| 国产精品一区二区男女羞羞无遮挡| 国产一区二区三区免费看| 大白屁股一区二区视频| 91免费国产视频网站| 欧美亚洲禁片免费| 欧美一区二区在线免费播放| 欧美mv日韩mv国产网站| 久久精品视频在线看| 国产精品高清亚洲| 亚洲免费视频中文字幕| 日韩和的一区二区| 国产一区免费电影| av动漫一区二区| 欧美日韩第一区日日骚| 日韩欧美一区电影| 精品国产一区a| 国产精品久久久久精k8| 性做久久久久久| 国产乱子伦视频一区二区三区 | 欧美日韩视频在线观看一区二区三区| 欧美二区三区的天堂| 国产欧美一区在线| 亚洲国产日韩av| 狠狠色2019综合网| 91日韩在线专区| 精品免费视频一区二区| 亚洲女爱视频在线| 久久精品国产一区二区三| 99久久综合色| 精品国产制服丝袜高跟| 亚洲特黄一级片| 久久99这里只有精品| 一本久久a久久精品亚洲| 日韩欧美亚洲国产另类| 亚洲图片你懂的| 精品一区二区三区在线播放视频| 色天使久久综合网天天| 国产日韩欧美高清在线| 偷拍自拍另类欧美| fc2成人免费人成在线观看播放| 91精品婷婷国产综合久久竹菊| 国产精品久久久久久久久搜平片| 日本不卡在线视频| 91麻豆视频网站| 国产日韩欧美精品电影三级在线| 婷婷激情综合网| 91麻豆成人久久精品二区三区| 久久久美女艺术照精彩视频福利播放| 午夜精品一区二区三区三上悠亚| 成人激情动漫在线观看| 精品久久久久久无| 日日夜夜精品视频免费| 色综合久久中文综合久久牛| 国产欧美一区二区三区鸳鸯浴| 蜜乳av一区二区三区| 欧美系列亚洲系列| 国产精品国产三级国产aⅴ中文| 国产真实乱子伦精品视频| 欧美美女一区二区| 一区二区成人在线| 91香蕉视频污| 中文字幕一区二区三区在线观看| 国产乱淫av一区二区三区 | 欧美亚洲国产一卡| 亚洲精品乱码久久久久久黑人| 成人免费视频一区| 国产日韩欧美不卡在线| 国产一区二区精品久久91| 欧美mv和日韩mv的网站| 免费久久精品视频| 欧美一区二区三区在线观看视频| 午夜久久久久久电影| 欧洲一区二区三区在线| 亚洲女厕所小便bbb| 91麻豆蜜桃一区二区三区| 1区2区3区国产精品| av在线不卡观看免费观看| 国产精品久久久爽爽爽麻豆色哟哟| 国内成人自拍视频| 久久精品欧美日韩| 国产999精品久久久久久| 国产视频一区二区三区在线观看 | 日韩电影免费在线| 欧美一级夜夜爽| 精品一区二区在线视频| 亚洲精品一区二区三区四区高清| 久久精品999| 久久久不卡网国产精品二区| 大白屁股一区二区视频| 亚洲欧洲在线观看av| 日本伦理一区二区| 视频一区二区三区入口| 日韩视频一区二区三区在线播放 | av在线这里只有精品| 强制捆绑调教一区二区| 555www色欧美视频| 狠狠狠色丁香婷婷综合激情| 中文字幕不卡一区| 91丨porny丨最新| 亚洲成av人片www| 精品国产凹凸成av人导航| 国产电影一区二区三区| 亚洲欧美日韩久久| 911精品国产一区二区在线| 韩国av一区二区三区在线观看| 国产三级欧美三级| 日本韩国一区二区| 三级欧美韩日大片在线看| 日韩免费福利电影在线观看| 国产激情精品久久久第一区二区 | 中文在线免费一区三区高中清不卡| 国产sm精品调教视频网站| 有码一区二区三区| 日韩一区二区电影在线| 成人性生交大片免费看视频在线| 一区二区三区电影在线播| 日韩一区二区影院| 99视频有精品| 人禽交欧美网站| 中文字幕一区二区在线播放| 欧美一区二区二区| 99国产精品久久久久| 美女国产一区二区三区| 亚洲丝袜自拍清纯另类| 日韩欧美在线网站| 91麻豆精品秘密| 国产一区中文字幕| 亚洲1区2区3区视频| 国产精品乱码久久久久久| 欧美一区二区三区人| 色素色在线综合| 国产·精品毛片| 久久成人精品无人区| 亚洲尤物在线视频观看|