精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产乱码精品一区二区三区亚洲人 | 日韩一区二区福利| 精品亚洲视频在线| 国产在线xxx| 久久精品欧美日韩| 91麻豆国产语对白在线观看| 日韩精品一区二区av| 欧美手机在线| 精品999在线播放| 国产理论在线播放| av中文在线资源库| 中文字幕色av一区二区三区| 国产精品swag| 在线观看免费观看在线| 樱桃成人精品视频在线播放| 伊人久久久久久久久久久久久| 欧美xxxx黑人| 日韩和的一区二在线| 一区二区三区在线免费观看| 欧美连裤袜在线视频| www.五月婷婷| 美女一区二区视频| 日本精品久久中文字幕佐佐木| 免费三级在线观看| 精品少妇av| 亚洲国产日韩欧美综合久久| 91在线第一页| 草莓视频成人appios| 欧美日韩国产中文精品字幕自在自线| 久久久一二三四| 黄色影院在线播放| 99久久久国产精品免费蜜臀| 91精品网站| 91麻豆国产在线| 日本午夜精品一区二区三区电影| 欧美精品福利视频| 日本妇女毛茸茸| 禁果av一区二区三区| 亚洲精品aⅴ中文字幕乱码| 日本高清免费在线视频| 天堂久久一区| 欧美三级视频在线观看 | 老司机午夜免费精品视频| 欧美激情第一页xxx| 国产精品白嫩白嫩大学美女| 91综合网人人| 日韩小视频在线| 久久午夜精品视频| 欧美理论视频| 伊人久久精品视频| 少妇精品无码一区二区免费视频| 日韩最新在线| 精品无人区乱码1区2区3区在线 | av一级亚洲| 日韩免费电影一区| 午夜免费福利网站| 欧美精品三级在线| 精品久久一区二区三区| 亚洲啪av永久无码精品放毛片 | 久久av一区二区三区亚洲| 亚洲精品久久久狠狠狠爱| 国产成都精品91一区二区三| 91成人免费看| 亚洲第一视频在线播放| 成人美女视频在线看| 精品一区二区不卡| 国产在线网站| 国产精品乱人伦中文| 伊人情人网综合| 国产高清一区二区三区视频| 一级特黄大欧美久久久| 欧美视频在线观看网站| av日韩亚洲| 欧美三级电影在线观看| 欧美一级视频在线| 91在线一区| 精品五月天久久| 永久免费看mv网站入口亚洲| 91视频最新| 亚洲第一页视频| av欧美精品.com| 日韩av免费电影| 伦xxxx在线| 亚洲午夜精品17c| 成年人视频在线免费| 成人一级视频| 日韩欧美中文字幕公布| aaaa黄色片| 国产亚洲精品美女久久久久久久久久| 在线亚洲欧美视频| 欧美日韩在线观看成人| 国产一区二区三区的电影| 日韩av免费一区| 国产手机精品视频| 91蜜桃传媒精品久久久一区二区| 日韩亚洲不卡在线| 男人和女人做事情在线视频网站免费观看 | 国产在线视频网| 亚洲精品美腿丝袜| 久久精品免费一区二区| 玖玖精品在线| 亚洲娇小xxxx欧美娇小| 激情无码人妻又粗又大| 亚洲看片免费| 成人免费自拍视频| 免费一级在线观看| 一区二区三区在线视频观看| 欧美日韩在线成人| 第一区第二区在线| 色偷偷av亚洲男人的天堂| 国产精品老女人| 国产剧情一区在线| 小说区图片区图片区另类灬| h片在线观看下载| 欧美日韩精品免费| 黄色在线观看av| 欧美88av| 国产日韩欧美中文在线播放| 四虎国产精品永远| 一区二区成人在线视频| 五月天av在线播放| 精品大片一区二区| 欧洲亚洲女同hd| 日韩一级免费毛片| 亚洲综合视频网| 色一情一区二区三区| 精品国产精品| 欧美最顶级的aⅴ艳星| 亚洲精品久久久久久无码色欲四季| 欧美激情一区二区三区蜜桃视频| 男女超爽视频免费播放| 涩爱av色老久久精品偷偷鲁| 色阁综合伊人av| 亚洲精品毛片一区二区三区| 91美女片黄在线观看| 蜜臀精品一区二区| 日韩精品一区二区三区中文字幕| 丝袜亚洲另类欧美重口| 91青青草视频| 久久精品一区二区三区不卡 | 奇米亚洲午夜久久精品| 久久久久久久久久久久久久久久av| 性欧美ⅴideo另类hd| 7777精品久久久大香线蕉| 国产伦精品一区二区三区视频女| 538任你躁在线精品视频网站| 国产毛片av在线| 欧美日韩一二三四五区| 中国免费黄色片| 亚洲性图久久| 国产欧美日韩综合一区在线观看| 污污影院在线观看| 日韩免费视频线观看| 深夜福利影院在线观看| 国产91精品露脸国语对白| 99er在线视频| 六月丁香久久丫| 欧美综合在线第二页| 搞黄视频免费在线观看| 欧美日韩一区久久| 最新一区二区三区| 国产 日韩 欧美大片| 日韩伦理在线免费观看| 窝窝社区一区二区| 国产精品1234| 男人影院在线观看| 日韩视频一区二区| 国产成人啪精品午夜在线观看| 99re这里都是精品| 一本久道综合色婷婷五月| 日韩精品永久网址| 91av免费看| 色戒汤唯在线| 中文字幕欧美国内| 精品久久久久成人码免费动漫| 亚洲一区视频在线| 人人妻人人澡人人爽人人精品| 久久久水蜜桃av免费网站| 亚洲在线欧美| 大香伊人久久精品一区二区| 日韩免费观看av| 韩国av网站在线| 亚洲精品狠狠操| 最近中文字幕在线观看视频| 亚洲免费观看高清完整版在线| 无码国产69精品久久久久网站| 久久久人人人| 免费成人深夜夜行网站视频| 国产伦精品一区二区三区免费优势| 日本精品久久久久久久| 成人a在线视频免费观看| 亚洲精品电影久久久| 欧美另类高清videos的特点| 亚洲最大的成人av| 公肉吊粗大爽色翁浪妇视频| 国产999精品久久久久久| 亚洲一区二区蜜桃| 好吊视频一区二区三区四区| 天堂av一区二区| 国产毛片久久久| 国产欧洲精品视频| 亚洲精品88| 久久99久久99精品免观看粉嫩| 亚洲欧美日韩综合在线| 欧美一区二区久久| 免费又黄又爽又猛大片午夜| 一区二区三区不卡视频| jizz18女人高潮| 99热在这里有精品免费| 亚洲免费成人在线视频| 日韩成人精品在线| 国产白丝袜美女久久久久| 亚洲高清影视| 天天综合色天天综合色hd| 久久草在线视频| 69174成人网| 亚洲男女网站| 国产精品吹潮在线观看| jizzjizz中国精品麻豆| 欧美伦理91i| 在线观看精品一区二区三区| 亚洲精品一区中文字幕乱码| 黄色美女一级片| 日韩女优av电影| 国产精品久久久久久久免费| 欧美调教femdomvk| 男人天堂视频网| 一本一本大道香蕉久在线精品| 国产一卡二卡在线播放| 亚洲精品国产无天堂网2021| 国产一区二区三区视频播放| 中文字幕免费观看一区| 中文字幕国产专区| 91麻豆福利精品推荐| 性久久久久久久久久久| 成人黄页在线观看| 日本中文字幕久久看| 免费成人深夜夜行p站| 国产精品亚洲一区二区三区在线| 成人日韩在线视频| 蜜桃免费网站一区二区三区 | 久热精品在线| 日日橹狠狠爱欧美超碰| 国产欧美大片| 亚洲美免无码中文字幕在线 | 国产精品久久三| 天天操天天舔天天射| 欧美激情在线看| 最新日韩免费视频| 国产精品国模大尺度视频| 蜜桃av免费在线观看| 国产精品视频一区二区三区不卡| 免费观看a级片| 欧美激情一区二区| 亚洲色图100p| 亚洲黄色片在线观看| 伊人国产在线观看| 午夜精品福利在线| 免费观看成人毛片| 日本精品一级二级| 伊人久久国产精品| 欧美精品自拍偷拍| 亚洲精品国产片| 亚洲精品美女久久久久| 黄色av网站在线免费观看| 国产亚洲精品日韩| 动漫一区在线| 久久久久免费精品国产| 亚洲福利影院| 国产精品一区二区3区| 国产精品亚洲综合在线观看| 97超级碰碰| 日韩精品免费一区二区夜夜嗨| 欧美日韩一区二区三| 久久综合88| 第九区2中文字幕| 狠狠88综合久久久久综合网| 欧美极品欧美精品欧美图片| 美日韩一区二区三区| 在线观看一区二区三区视频| 91在线视频在线| 免费看一级黄色| 亚洲va欧美va天堂v国产综合| 青青青国产在线 | 十八禁一区二区三区| 亚洲日本中文字幕| 99热国产在线| 奇米4444一区二区三区| 在线免费成人| 精品视频一区二区| 91九色精品| 亚洲 高清 成人 动漫| 精品一区二区三区在线观看国产 | 老汉色老汉首页av亚洲| 日韩视频在线观看国产| 欧美日韩少妇| 99视频精品免费| 国产成a人亚洲精| 色欲狠狠躁天天躁无码中文字幕 | 特级西西444www大胆免费看| 欧美一级午夜免费电影| 青春有你2免费观看完整版在线播放高清| 中文字幕日韩欧美| 888av在线视频| 国产在线拍揄自揄视频不卡99| 欧美亚洲tv| 黑人巨茎大战欧美白妇| 日韩国产欧美在线视频| 性色av蜜臀av浪潮av老女人| **网站欧美大片在线观看| 亚洲大片免费观看| 欧美精品一区二| 97caopor国产在线视频| 国产精品久久久久久久天堂| 久久夜色电影| 欧美中文字幕在线观看视频 | 欧美午夜影院在线视频| a天堂视频在线| 日韩在线小视频| 欧美电影免费看| 国产自产精品| 欧美精品一卡| 中文字幕22页| 国产精品你懂的在线欣赏| 精品成人无码久久久久久| 亚洲精品白浆高清久久久久久| 性欧美1819sex性高清大胸| 国产日韩综合一区二区性色av| 妖精一区二区三区精品视频| 和岳每晚弄的高潮嗷嗷叫视频| 国产成人精品一区二区三区网站观看| 日本高清黄色片| 欧美性生活大片视频| 你懂的在线看| 欧洲中文字幕国产精品| 婷婷激情久久| 大陆极品少妇内射aaaaa| 成人免费观看av| 久久久久久蜜桃| 欧美成人猛片aaaaaaa| av软件在线观看| 3d动漫啪啪精品一区二区免费 | 久久久精品影视| 国产一级片毛片| 亚洲欧美一区二区三区情侣bbw| 国产福利电影在线播放| 国产一区二区三区四区五区在线| 狠狠爱www人成狠狠爱综合网| 亚洲熟妇一区二区| 亚洲自拍欧美精品| 国产 日韩 欧美 精品| 久久久亚洲国产| 伦理一区二区| 日韩av在线综合| 国产欧美精品一区二区三区四区| 欧美一级黄视频| 中文字幕欧美视频在线| 色8久久久久| 亚洲免费视频播放| 国产91精品露脸国语对白| 国产精品第72页| 日韩国产高清视频在线| 香蕉视频亚洲一级| 亚洲国产精品久久久久婷婷老年 | 一区二区三区四区电影| 日本55丰满熟妇厨房伦| 亚洲第一精品在线| 日本成人一区| 国产日韩av在线播放| 欧美99久久| 日本黄色录像片| 欧美在线免费视屏| 国产精品久久久久久福利| 69堂成人精品视频免费| 国产精品久久久久毛片大屁完整版| 国产精品揄拍100视频| 欧美三级日韩三级| 污污网站在线观看| 欧美成人蜜桃| 九一久久久久久| 日韩精品――中文字幕| 在线不卡国产精品| 婷婷综合国产| 青青在线视频观看| 亚洲欧洲三级电影| 熟妇人妻av无码一区二区三区| 国产成人精品久久久| 中文精品久久| 尤物视频最新网址| 欧美一二三区精品| 三上悠亚国产精品一区二区三区| 一区二区三区视频在线播放| 成人avav影音| 中文字幕在线播放不卡| 久久久欧美一区二区| 青青草成人影院| 999精品免费视频| 91超碰这里只有精品国产| 中文字幕 在线观看| 日本一区二区三区四区五区六区|