精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

掌握Promise:從基礎到高級應用的全面指

開發 前端
Promise有三種狀態:pending(待定)、fulfilled(實現)和rejected(拒絕)。一開始,Promise是pending,表示操作還未完成。一旦操作成功,狀態就會變成fulfilled;如果出了岔子,狀態就會變成rejected。而且,一旦狀態改變,就沒法再變回去了。

在JavaScript的異步編程領域,Promise無疑是一顆閃耀的明星。它為處理那些麻煩的延遲操作提供了一種簡潔而高效的解決方案。

1 Promise的基本概念

首先,我們得明白Promise是個啥。簡單來說,Promise就是一個代表了尚未完成但預計在未來會完成的操作的容器。它非常類似于一個你會在日后打開的盒子,盒子里可能是你想要的答案,也可能是個壞消息。

創建一個Promise就像制作這樣一個盒子。你用new Promise來制作,里面填上你的異步操作,比如發起一個網絡請求或者讀取一個文件。

Promise有三種狀態:pending(待定)、fulfilled(實現)和rejected(拒絕)。一開始,Promise是pending,表示操作還未完成。一旦操作成功,狀態就會變成fulfilled;如果出了岔子,狀態就會變成rejected。而且,一旦狀態改變,就沒法再變回去了。

2 使用.then()和.catch()方法

在JavaScript中,.then()和.catch()是Promise對象的方法,用于處理異步操作的結果。

  • .then()方法:當Promise對象的狀態變為fulfilled(已實現)時,會調用.then()方法中的回調函數,并將異步操作的結果作為參數傳遞給回調函數。.then()方法返回一個新的Promise對象,可以鏈式調用多個.then()方法來處理不同的結果。
const promise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('成功');
  }, 1000);
});

promise.then((result) => {
  console.log(result); // 輸出 "成功"
}).then((result) => {
  console.log('第二個 then');
});
  • .catch()方法:當Promise對象的狀態變為rejected(已拒絕)時,會調用.catch()方法中的回調函數,并將錯誤信息作為參數傳遞給回調函數。.catch()方法也可以鏈式調用,用于捕獲前面所有.then()中拋出的錯誤。
const promise = new Promise((resolve, reject) => {
  setTimeout(() => {
    reject('失敗');
  }, 1000);
});

promise.then((result) => {
  console.log(result);
}).catch((error) => {
  console.log(error); // 輸出 "失敗"
});

如果Promise對象的狀態已經是fulfilled或rejected,那么后續的.then()和.catch()將不會執行。另外,如果在.then()中拋出了異常,那么這個異常會被后面的.catch()捕獲。

3 并發執行和Promise的靜態方法

有時候,你需要同時運行多個Promise。這時,Promise.all()和Promise.race()就派上了用場。Promise.all()會等待所有的Promise都完成,然后才繼續。而Promise.race()則不那么耐心,只要有一個Promise完成,不管是fulfilled還是rejected,它就會立即繼續。

  1. Promise.all(iterable): 這個方法接收一個包含多個Promise對象的可迭代對象(如數組),并返回一個新的Promise對象。這個新的Promise對象會在所有傳入的Promise對象都成功完成時變為fulfilled狀態,并將每個Promise的結果組成一個數組作為參數傳遞給回調函數。如果任何一個Promise失敗,那么新的Promise對象會立即變為rejected狀態,并將第一個失敗的原因作為參數傳遞給回調函數。
const promise1 = Promise.resolve(3);
const promise2 = new Promise((resolve, reject) => setTimeout(resolve, 100, 'foo'));
const promise3 = Promise.resolve(5);

Promise.all([promise1, promise2, promise3]).then((values) => {
  console.log(values); // 輸出 [3, "foo", 5]
}).catch((error) => {
  console.log(error);
});
  1. Promise.race(iterable): 這個方法也接收一個包含多個Promise對象的可迭代對象,但與Promise.all()不同,它返回一個新的Promise對象,該對象會在傳入的Promise對象中的任意一個完成或失敗時立即改變狀態。無論哪個Promise先完成或失敗,都會將相應的結果或原因傳遞給回調函數。
const promise1 = new Promise((resolve, reject) => setTimeout(resolve, 500, 'one'));
const promise2 = new Promise((resolve, reject) => setTimeout(resolve, 100, 'two'));

Promise.race([promise1, promise2]).then((value) => {
  console.log(value); // 輸出 "two"
}).catch((error) => {
  console.log(error);
});

Promise.all()和Promise.race()都是異步操作,它們不會阻塞代碼的執行。這意味著你可以在等待這些Promise完成的同時繼續執行其他任務。

4 高級技巧:Promise.prototype.finally()

Promise.prototype.finally()是Promise原型上的一個方法,它用于在Promise鏈的末尾添加一個最終處理程序,無論Promise的狀態是fulfilled還是rejected,這個處理程序都會被調用。這就像是不管你去參加派對后心情如何,回家總是要做的。

4.1 作用

  • finally()方法的主要作用是在Promise鏈的最后添加清理或收尾工作,比如關閉文件、釋放資源、清除定時器等。
  • 這個方法接受一個回調函數作為參數,這個回調函數沒有參數,也不返回值。

4.2 用法

const promise = new Promise((resolve, reject) => {
  // ...異步操作
});

promise
  .then(result => {
    // ...處理成功結果
  })
  .catch(error => {
    // ...處理錯誤
  })
  .finally(() => {
    // ...執行清理或收尾工作
  });

4.3 特點

  1. 始終執行:無論前面的then()或catch()是否拋出異常,finally()中的回調函數都會被執行。
  2. 無參數:finally()中的回調函數不接收任何參數,這意味著它不能直接訪問到then()或catch()中的結果或錯誤。
  3. 返回新的Promise:如果finally()中的回調函數拋出異常,或者返回一個新的Promise,那么這個新的Promise會成為finally()方法的返回值。

4.4 技巧

  • 鏈式調用:finally()可以與其他Promise方法進行鏈式調用。
  • 錯誤處理:在finally()中可以進行一些通用的錯誤處理,比如記錄日志、發送錯誤報告等。
  • 資源清理:finally()非常適合用來執行一些無論成功還是失敗都需要進行的資源清理工作。
fetch('https://api.example.com/data')
  .then(response => response.json())
  .then(data => {
    console.log(data);
    return data;
  })
  .catch(error => {
    console.error('Error:', error);
  })
  .finally(() => {
    console.log('Fetch completed');
  });

上述代碼中,無論fetch()請求成功還是失敗,都會在控制臺輸出"Fetch completed"。

5 ES6的async/await

在ES6中,async/await是一種處理異步操作的新方法,它基于Promise實現,但提供了更加簡潔和直觀的語法。

  • async關鍵字:用于聲明一個函數為異步函數。一個被async修飾的函數會自動將返回值包裝成一個Promise對象。如果返回值是thenable對象,那么會等待其解析為最終值;如果返回值是一個原始值,那么會直接解析為該值。
async function asyncFunc() {
  return 'hello';
}

const result = asyncFunc(); // result是一個Promise對象
result.then(console.log); // 輸出 "hello"
  • await關鍵字:用于在async函數內部等待一個Promise解析為最終值。await暫停代碼執行,直到Promise解析完成,然后返回解析值。如果Promise被拒絕,那么await會拋出異常。
async function asyncFunc() {
  const result = await new Promise((resolve, reject) => setTimeout(resolve, 1000, 'world'));
  console.log(result); // 1秒后輸出 "world"
}

asyncFunc();

使用async/await的優勢:

  • 更簡潔:不需要使用.then()鏈或.catch()來處理結果和錯誤。
  • 更好的錯誤處理:可以使用正常的try/catch語句來捕獲異常。
  • 順序執行:可以更容易地保證異步操作按預期的順序執行。
async function fetchData(url) {
  try {
    const response = await fetch(url);
    if (!response.ok) {
      throw new Error('Network response was not ok');
    }
    const data = await response.json();
    console.log(data);
  } catch (error) {
    console.error('There has been a problem with your fetch operation:', error);
  }
}

fetchData('https://api.example.com/data');

我們定義了一個異步函數fetchData,它接受一個URL作為參數。我們使用await來等待fetch()請求的結果,然后再等待將響應體解析為JSON。如果在這個過程中發生任何錯誤,我們可以使用try/catch語句來捕獲并處理它。

責任編輯:武曉燕 來源: 塵緣如夢
相關推薦

2023-10-09 23:00:00

jsonPython

2024-10-17 09:57:30

2024-11-27 15:49:46

字符串Python

2024-04-01 09:32:23

AccumulatePython工具

2023-10-27 08:42:56

Python字典

2025-03-28 06:01:00

TypeScript泛型開發

2025-09-03 04:15:00

Swagger@TagAPI

2025-08-05 07:34:59

2023-10-30 08:53:36

Python輸入輸出

2021-02-05 09:00:00

開發IT事件管理

2024-08-14 08:16:53

2024-01-22 11:33:17

C++編程語言開發

2024-05-09 08:43:19

WPFUI線程UI更新

2024-10-16 15:25:15

2025-06-04 08:20:00

Compressor前端開發

2024-06-20 09:58:19

C#Attribute元數據機制

2024-09-17 20:00:53

2024-01-10 16:46:13

Kubernetes容器

2024-04-08 11:06:29

Rust測試控制

2025-07-23 07:28:24

點贊
收藏

51CTO技術棧公眾號

欧美日韩国产精品一区| 成人一区二区三区视频在线观看| 亚洲日本欧美日韩高观看| 黄色一级免费大片| 色影视在线观看| 国产a级毛片一区| 日本久久精品视频| 欧美性x x x| 欧美毛片免费观看| 欧美日韩综合色| 国产毛片久久久久久国产毛片| 日韩av成人| 国产曰批免费观看久久久| 97精品国产97久久久久久春色| 在线观看免费小视频| 成人高潮a毛片免费观看网站| 日本韩国一区二区| www.xxx麻豆| 免费日本一区二区三区视频| 99久久免费国产| 成人欧美一区二区三区黑人| 青青国产在线观看| 欧美涩涩网站| 色综合亚洲精品激情狠狠| 一本色道综合久久欧美日韩精品| 日韩av黄色| 一本一道波多野结衣一区二区| 麻豆md0077饥渴少妇| 国产视频三级在线观看播放| 成人精品在线视频观看| 91老司机精品视频| 中文字幕在线观看精品| 国产精品试看| 欧美激情一级二级| 欧美国产日韩在线观看成人 | 美女诱惑黄网站一区| 色综合久综合久久综合久鬼88| 免费福利视频网站| 岳的好大精品一区二区三区| 亚洲国产精品系列| 麻豆tv在线观看| 精品国产三级| 3atv在线一区二区三区| 向日葵污视频在线观看| 精品国模一区二区三区| 欧美性生交xxxxx久久久| 男的插女的下面视频| 女同视频在线观看| 亚洲色图20p| 波多野结衣激情| 精品国产丝袜高跟鞋| 国产精品传媒入口麻豆| 亚洲图片小说在线| 在线观看美女网站大全免费| 国产欧美日韩精品一区| 日韩视频在线播放| av播放在线| 亚洲欧洲美洲综合色网| 国产精品亚洲天堂| 黄色网址免费在线观看| 中文字幕亚洲在| 亚洲小说欧美另类激情| 青春草视频在线| 亚洲国产精品久久不卡毛片| 日韩视频在线视频| 国产在线美女| 欧美日韩日本国产| 北条麻妃在线观看| 少妇一区视频| 欧美影院一区二区| 亚洲欧美手机在线| 91麻豆精品激情在线观看最新| 欧美成va人片在线观看| 亚洲黄色免费在线观看| 精品中文一区| 久久精品国产精品| 国产亚洲精品久久久久久无几年桃| 欧美午夜电影在线观看 | 超碰人人爱人人| av日韩国产| 色婷婷精品大在线视频| 亚洲天堂网2018| 超碰精品在线| 亚洲欧洲日产国产网站| 很污很黄的网站| 午夜精品影院| 欧亚精品中文字幕| 亚洲最大成人av| 东方欧美亚洲色图在线| 欧美精品欧美精品| 超鹏97在线| 一本一道综合狠狠老| 天天综合成人网| 精品久久97| 中文字幕在线亚洲| 国产第一页在线播放| 日韩av二区在线播放| 亚洲自拍小视频免费观看| 少妇荡乳情欲办公室456视频| 久久亚洲一区二区三区明星换脸 | 亚洲麻豆一区| 国产精品免费在线免费| 亚洲精品久久久久久无码色欲四季 | 欧美专区日韩视频| 91中文字幕在线视频| 99热99精品| 警花观音坐莲激情销魂小说| 原纱央莉成人av片| 日韩三级高清在线| 激情五月深爱五月| 国产亚洲福利| 99re资源| 日韩在线观看www| 狠狠躁天天躁日日躁欧美| 亚洲第一区第二区第三区| 神马电影久久| 高清一区二区三区四区五区| ,一级淫片a看免费| 久久蜜桃香蕉精品一区二区三区| 一级黄色片播放| 全球最大av网站久久| 亚洲精品久久久久国产| 国产1区2区3区4区| 日韩av电影免费观看高清完整版| 久久婷婷国产综合尤物精品| 少女频道在线观看免费播放电视剧| 在线观看91视频| 欧美熟妇一区二区| 国产日韩欧美一区在线 | 亚洲欧美自拍另类日韩| 中文字幕av一区二区三区人| 久久久久久中文字幕| 国产高清免费av| 国产精品久久久久9999吃药| 日本激情视频在线| 中国av一区| 欧美最顶级的aⅴ艳星| 人妻va精品va欧美va| 亚洲一区精品在线| 亚洲 自拍 另类 欧美 丝袜| 亚洲视频电影在线| 国产日韩av高清| 午夜视频成人| 欧美日韩一区二区在线观看| 国产黄色大片免费看| 丝瓜av网站精品一区二区| 欧美动漫一区二区| 人人视频精品| 国产午夜精品全部视频在线播放| 欧美黄色一级大片| 国产视频视频一区| 91激情视频在线| 欧美自拍偷拍| 国产拍精品一二三| 成人免费看片| 日韩免费看网站| 国产精品第72页| 99精品欧美一区二区蜜桃免费| 日韩美女爱爱视频| 香蕉久久精品日日躁夜夜躁| 欧洲中文字幕国产精品 | 欧美日韩999| 亚洲精品视频91| 婷婷成人激情在线网| 中文字幕乱码在线| 久久都是精品| 亚洲精品电影在线一区| 国产精品久久久久久久久久久久久久久 | 日韩av中文字幕一区二区三区| 日韩精品成人一区二区在线观看| 88xx成人免费观看视频库 | 日韩黄色免费观看| av电影在线观看一区| av免费在线播放网站| 日韩一区电影| 91嫩草在线| 碰碰在线视频| 日韩亚洲综合在线| 亚洲第一视频在线播放| 日韩欧美有码在线| 亚洲AV成人无码网站天堂久久| 国产在线精品一区二区夜色| 欧美又粗又长又爽做受| 国产精品免费99久久久| 亚洲va男人天堂| 台湾佬中文娱乐网欧美电影| 日韩专区中文字幕| 少妇精品视频一区二区| 欧美在线小视频| 久久久久久久福利| 国产日韩精品一区二区浪潮av| 女王人厕视频2ⅴk| 国产精品日韩| 亚洲天堂第一区| 久久爱www成人| 91精品久久久久久蜜桃| 美脚恋feet久草欧美| 久久手机免费视频| 欧美高清电影在线| 日韩精品中午字幕| 做爰无遮挡三级| 午夜日韩在线电影| 中文乱码字幕高清一区二区| 99久久99久久久精品齐齐| 亚洲小视频网站| 国产欧美日韩一区二区三区在线| 一区二区精品国产| 九九综合在线| 成人片在线免费看| 成人免费视频观看| 日产精品久久久一区二区福利| 69xxx在线| 中文字幕国产亚洲| 色网站在线免费观看| 日韩久久久久久| av无码精品一区二区三区宅噜噜| 在线免费观看日韩欧美| 日本熟妇毛耸耸xxxxxx| 亚洲欧美日韩综合aⅴ视频| 成人片黄网站色大片免费毛片| 成人免费高清视频在线观看| 伊人精品视频在线观看| 开心九九激情九九欧美日韩精美视频电影| 国产精品沙发午睡系列| 午夜欧美视频| 色中文字幕在线观看| 精品视频国产| 欧美一区二区三区成人久久片 | 欧美精品一区二区三区在线看午夜| 日本成人手机在线| 91精品免费视频| 另类一区二区| 国产精品影片在线观看| 婷婷激情一区| 国产91九色视频| 卡通欧美亚洲| 国产91在线高潮白浆在线观看| 无码小电影在线观看网站免费| 高清一区二区三区四区五区| 8x8ⅹ拨牐拨牐拨牐在线观看| 欧美日本中文字幕| 免费影视亚洲| 欧美激情videos| 国内在线免费视频| 久久久人成影片一区二区三区观看| 中文字幕在线三区| 九九精品视频在线观看| 伊人福利在线| 久久免费视频这里只有精品| 丁香高清在线观看完整电影视频| 欧美激情一区二区久久久| 免费在线看污片| 久久久之久亚州精品露出| 7777kkk亚洲综合欧美网站| 91精品国产乱码久久久久久蜜臀 | 懂色av中文在线| 中文字幕免费国产精品| √天堂资源地址在线官网| 色偷偷av一区二区三区| 黄色在线播放网站| 九九热r在线视频精品| 国产啊啊啊视频在线观看| 欧美一级淫片aaaaaaa视频| 亚洲人免费短视频| 亚洲一区中文字幕在线观看| 99re91这里只有精品| 国模精品一区二区三区| 一个色免费成人影院| 五月天丁香综合久久国产| 久久精品国产www456c0m| 成人免费看片视频在线观看| 亚洲视频精品| 国产激情在线观看视频| 黄网站免费久久| 熟妇高潮一区二区| 久久九九全国免费| 久久高清内射无套| 欧美日韩免费在线观看| 国产一级片一区二区| 日韩一区二区三区视频| 亚洲日本国产精品| 色狠狠av一区二区三区香蕉蜜桃| 特级毛片在线| 国产成人福利网站| 亚洲一二三区视频| 日本精品一区二区三区不卡无字幕| 999成人网| 大陆极品少妇内射aaaaa| 蜜桃av一区二区在线观看 | 久久久久97| 亚洲精品一区二区三区樱花| 激情综合在线| 另类小说第一页| 成人精品一区二区三区中文字幕| 欧美18—19性高清hd4k| 一区二区三区蜜桃| 无码日韩精品一区二区| 欧美r级电影在线观看| 国产人成在线观看| 欧美—级高清免费播放| 在线成人视屏 | 亚洲成人午夜影院| 曰批又黄又爽免费视频| 亚洲精品ady| 国产精品va在线观看视色| 国产黑人绿帽在线第一区| 成午夜精品一区二区三区软件| 亚洲精品乱码久久久久久蜜桃91| 亚洲精品激情| 爱情岛论坛亚洲自拍| 欧美国产精品一区二区三区| 九九九国产视频| 日韩午夜激情av| 98在线视频| 青青草原一区二区| 国产精品x8x8一区二区| 四虎影院一区二区| 青青草精品视频| 中文字幕丰满孑伦无码专区| 亚洲一区中文在线| 国产伦精品一区二区三区视频痴汉| 亚洲美女av黄| 亚洲欧美另类日本| 亚洲资源av| 亚洲美女高潮久久久| 亚洲人妖av一区二区| 色婷婷久久综合中文久久蜜桃av| 亚洲精品久久视频| 精精国产xxxx视频在线中文版 | 国产深夜男女无套内射| 国产成人丝袜美腿| 欧美成人三级在线观看| 67194成人在线观看| 午夜激情视频在线观看| 国产精品视频久久久久| 精品国产一区二区三区四区| 韩国一区二区av| 久久久亚洲午夜电影| 久久精品视频1| 精品视频在线观看日韩| 国产剧情av在线播放| 精品一区二区三区自拍图片区 | 欧美一区亚洲一区| 欧美人与动xxxxz0oz| 国产精品999视频| 97久久精品人人做人人爽| 日韩激情在线播放| 亚洲精品狠狠操| 久久人体大尺度| 色乱码一区二区三在线看| 视频一区视频二区中文| 国产又粗又猛又爽又黄av| 欧美在线一区二区三区| 色三级在线观看| 亚洲一区亚洲二区亚洲三区| 欧美午夜一区二区福利视频| 麻豆免费在线观看视频| 午夜一区二区三区视频| 亚洲日本香蕉视频| 国产精品99久久久久久白浆小说| 成人高清电影网站| 一级淫片在线观看| 亚洲午夜影视影院在线观看| 色视频免费在线观看| 国产成人啪精品视频免费网| 日韩精品首页| 91精品国产三级| 五月婷婷另类国产| 国产在线视频网| 成人免费黄色网| 亚洲伦理一区| 日本午夜精品视频| 日韩精品一区二| 黑人巨大亚洲一区二区久 | 欧美性猛交xxxx乱| 精品视频999| 欧美大片黄色| 日本一区免费看| 国产精品亚洲人在线观看| 91看片在线播放| 日韩亚洲一区二区| 麻豆一区二区麻豆免费观看| 欧美黑人又粗又大又爽免费| 自拍视频在线观看一区二区| 少妇精品视频一区二区| 国产精品久久久久免费a∨大胸| 欧美一区二区三区免费看| 野外性满足hd| 欧美一区二区三区四区久久 | 欧美性猛交xxxxx水多| 午夜伦全在线观看| 久久影院理伦片| 精品一区二区影视| 国产精品自拍99| 欧美老女人性视频| 成人同人动漫免费观看| 日本少妇xxxx| 91精品国产综合久久久久久久久久 | 免费日韩一区二区三区 | 波多野结衣视频一区|