自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

這 10 個(gè)片段,有助于你理解 ES 中的 Promise

開(kāi)發(fā) 前端
在開(kāi)發(fā)中,了解 JavaScript 和 Promise 基礎(chǔ),有助于提高我們的編碼技能,今天,我們一起來(lái)看看下面的 10 片段,相信看完這 10 個(gè)片段有助于我們對(duì) Promise 的理解。

在開(kāi)發(fā)中,了解 JavaScript 和 Promise 基礎(chǔ),有助于提高我們的編碼技能,今天,我們一起來(lái)看看下面的 10 片段,相信看完這 10 個(gè)片段有助于我們對(duì) Promise 的理解。

片段1:

這 10 個(gè)片段,有助于你理解 ES 中的 Promise

Promise同步執(zhí)行,promise.then異步執(zhí)行。

片段2:

這 10 個(gè)片段,有助于你理解 ES 中的 Promise

promise 有三種不同的狀態(tài):

  • pending
  • fulfilled
  • rejected

一旦狀態(tài)更新,pending->fulfilled 或pending->rejected,就可以再次更改它。prom1與prom2不同,并且兩者都返回新的Promise狀態(tài)。

片段3

這 10 個(gè)片段,有助于你理解 ES 中的 Promise

即使reject后有一個(gè)resolve調(diào)用,也只能執(zhí)行一次resolve或reject,剩下的不會(huì)執(zhí)行。

片段 4:

這 10 個(gè)片段,有助于你理解 ES 中的 Promise

Promises 可以鏈接調(diào)用,當(dāng)提到鏈接調(diào)用 時(shí),我們通常會(huì)考慮要返回this,但Promises不用。每次 promise 調(diào)用.then或.catch時(shí),默認(rèn)都會(huì)返回一個(gè)新的 promise,從而實(shí)現(xiàn)鏈接調(diào)用。

片段 5:

這 10 個(gè)片段,有助于你理解 ES 中的 Promise

promise 的 .then或.catch可以被多次調(diào)用,但是此處Promise構(gòu)造函數(shù)僅執(zhí)行一次。換句話說(shuō),一旦promise的內(nèi)部狀態(tài)發(fā)生變化并獲得了一個(gè)值,則隨后對(duì).then或.catch的每次調(diào)用都將直接獲取該值。

片段 6

這 10 個(gè)片段,有助于你理解 ES 中的 Promise

.then或.catch返回的值不能是promise本身,否則將導(dǎo)致無(wú)限循環(huán)。

片段 7:

這 10 個(gè)片段,有助于你理解 ES 中的 Promise

在.then或.catch中返回錯(cuò)誤對(duì)象不會(huì)引發(fā)錯(cuò)誤,因此后續(xù)的.catch不會(huì)捕獲該錯(cuò)誤對(duì)象,需要更改為以下對(duì)象之一:

  1. return Promise.reject(new Error('error')) throw new Error('error') 

因?yàn)榉祷厝魏畏莗romise 值都將包裝到一個(gè)Promise對(duì)象中,也就是說(shuō),返回new Error('error')等同于返回Promise.resolve(new Error('error'))。

片段 8:

  1. Promise.resolve(1) 
  2.   .then(2) 
  3.   .then(Promise.resolve(3)) 
  4.   .then(console.log) 
  5.  
  6.   // 1 

.then或.catch的參數(shù)應(yīng)為函數(shù),而傳遞非函數(shù)將導(dǎo)致值的結(jié)果被忽略,例如.then(2)或.then(Promise.resolve(3)。

片段 9:

這 10 個(gè)片段,有助于你理解 ES 中的 Promise

.then可以接受兩個(gè)參數(shù),第一個(gè)是處理成功的函數(shù),第二個(gè)是處理錯(cuò)誤的函數(shù)。.catch是編寫(xiě).then的第二個(gè)參數(shù)的便捷方法,但是在使用中要注意一點(diǎn):.then第二個(gè)錯(cuò)誤處理函數(shù)無(wú)法捕獲第一個(gè)成功函數(shù)和后續(xù)函數(shù)拋出的錯(cuò)誤。.catch捕獲先前的錯(cuò)誤。當(dāng)然,如果要重寫(xiě),下面的代碼可以起作用:

這 10 個(gè)片段,有助于你理解 ES 中的 Promise

片段 10:

這 10 個(gè)片段,有助于你理解 ES 中的 Promise

process.nextTick和promise.then都屬于微任務(wù),而setImmediate屬于宏任務(wù),它在事件循環(huán)的檢查階段執(zhí)行。在事件循環(huán)的每個(gè)階段(宏任務(wù))之間執(zhí)行微任務(wù),并且事件循環(huán)的開(kāi)始執(zhí)行一次。

責(zé)任編輯:趙寧寧 來(lái)源: 今日頭條
相關(guān)推薦

2019-11-19 12:40:36

AI人工智能開(kāi)源工具

2021-06-10 09:34:24

前端開(kāi)發(fā)工具開(kāi)發(fā)

2020-12-08 08:07:41

JavaScript中等分?jǐn)?shù)組

2019-11-18 11:07:13

人工智能技術(shù)Apache

2021-08-13 10:33:55

IT經(jīng)理首席信息官CIO

2020-03-23 09:31:51

JavaScript函數(shù)技術(shù)

2017-09-06 15:53:55

機(jī)器學(xué)習(xí)人工智能框架

2010-03-12 16:15:06

Python調(diào)試

2022-10-08 08:38:32

物聯(lián)網(wǎng)

2021-11-26 05:14:44

開(kāi)源數(shù)據(jù)庫(kù)安全漏洞

2018-10-25 14:14:52

云計(jì)算機(jī)器學(xué)習(xí)數(shù)據(jù)分析

2011-12-09 09:31:58

桌面虛擬化

2021-08-06 10:00:29

網(wǎng)站劫持網(wǎng)絡(luò)攻擊網(wǎng)站安全

2013-07-17 09:19:23

2020-02-05 13:03:55

數(shù)據(jù)中心混合云技術(shù)

2017-04-14 10:40:43

SDS系統(tǒng)選擇

2023-06-09 19:03:35

開(kāi)源組織

2019-08-12 07:39:25

數(shù)據(jù)中心IT開(kāi)銷

2022-09-21 14:12:33

大數(shù)據(jù)醫(yī)療保健

2014-04-15 10:07:22

大數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)