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

Promise.prototype.finally 的作用,如何自己實現(xiàn) Promise.prototype.finally

開發(fā) 架構(gòu)
Promise.prototype.finally() 是 ES2018 新增的特性,它回一個 Promise ,在 promise 結(jié)束時,無論 Promise 運行成功還是失敗,都會運行 finally ,類似于我們常用的 try {...} catch {...} finally {...}。

[[396754]]

本文轉(zhuǎn)載自微信公眾號「三分鐘學(xué)前端」,作者sisterAn。轉(zhuǎn)載本文請聯(lián)系三分鐘學(xué)前端公眾號。

Promise.prototype.finally() 的作用

Promise.prototype.finally() 是 ES2018 新增的特性,它回一個 Promise ,在 promise 結(jié)束時,無論 Promise 運行成功還是失敗,都會運行 finally ,類似于我們常用的 try {...} catch {...} finally {...}

Promise.prototype.finally() 避免了同樣的語句需要在 then() 和 catch() 中各寫一次的情況

  1. new Promise((resolve, reject) => { 
  2.   setTimeout(() => resolve("result"), 2000) 
  3. }) 
  4.   .then(result => console.log(result)) 
  5.   .finally(() => console.log("Promise end")) 
  6.  
  7. // result 
  8. // Promise end 

reject :

  1. new Promise((resolve, reject) => { 
  2.   throw new Error("error"
  3. }) 
  4.   .catch(err => console.log(err)) 
  5.   .finally(() => console.log("Promise end")) 
  6.  
  7. // Error: error 
  8. // Promise end 

注意:

  • finally 沒有參數(shù)
  • finally 會將結(jié)果和 error 傳遞
  1. new Promise((resolve, reject) => { 
  2.   setTimeout(() => resolve("result"), 2000) 
  3. }) 
  4.   .finally(() => console.log("Promise ready")) 
  5.   .then(result => console.log(result)) 
  6.  
  7. // Promise ready 
  8. // result 

手寫一個 Promise.prototype.finally()

不管 Promise 對象最后狀態(tài)如何,都會執(zhí)行的操作

  1. MyPromise.prototype.finally = function (cb) { 
  2.   return this.then(function (value) { 
  3.     return MyPromise.resolve(cb()).then(function () { 
  4.       return value 
  5.     }) 
  6.   }, function (err) { 
  7.     return MyPromise.resolve(cb()).then(function () { 
  8.       throw err 
  9.     }) 
  10.   }) 

 

來自:https://github.com/sisterAn/blog

 

責(zé)任編輯:武曉燕 來源: 三分鐘學(xué)前端
相關(guān)推薦

2021-03-27 10:56:17

promisethenfinally

2021-03-19 09:52:13

ES2018異步迭代開發(fā)

2021-04-27 08:31:37

Promisereject信息

2021-04-28 08:21:21

Promise.any服務(wù)器場景

2021-01-18 08:24:51

JavaScriptMicrotask微任務(wù)

2020-12-15 08:01:24

Promise參數(shù)ES6

2018-03-13 16:04:45

Promise執(zhí)行順序

2023-09-15 15:31:23

異步編程Promise

2017-05-11 20:20:59

JavascriptPromiseWeb

2020-07-29 17:35:08

Promise源碼前端

2021-03-09 07:37:42

技術(shù)Promise測試

2022-09-28 12:23:36

Promise代碼

2020-09-18 09:02:20

JavaScript

2012-12-24 09:45:21

2011-11-18 09:26:18

Javafinally

2016-06-07 14:28:39

Javascript原型

2022-01-21 08:50:15

Promise任務(wù)隊列前端

2020-09-24 11:46:03

Promise

2015-07-23 11:59:27

JavascriptPromise

2009-07-08 17:48:18

prototype屬性
點贊
收藏

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