日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
這 10 個片段,有助于你理解 ES 中的 Promise

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

片段1:

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

片段2:

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

  • pending
  • fulfilled
  • rejected

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

片段3

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

片段 4:

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

片段 5:

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

片段 6

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

片段 7:

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

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

因為返回任何非promise 值都將包裝到一個Promise對象中,也就是說,返回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ù)應為函數(shù),而傳遞非函數(shù)將導致值的結果被忽略,例如.then(2)或.then(Promise.resolve(3)。

片段 9:

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

片段 10:

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


新聞標題:這 10 個片段,有助于你理解 ES 中的 Promise
文章網址:http://m.5511xx.com/article/dhsddce.html