博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Promise.prototype.finally 的作用,如何自己实现 Promise.prototype.finally
阅读量:4105 次
发布时间:2019-05-25

本文共 1228 字,大约阅读时间需要 4 分钟。

Promise.prototype.finally() 的作用

Promise.prototype.finally() 是 ES2018 新增的特性,它回一个 Promise ,在 promise 结束时,无论 Promise 运行成功还是失败,都会运行 finally ,类似于我们常用的  try {...} catch {...} finally {...}

Promise.prototype.finally() 避免了同样的语句需要在 then()catch() 中各写一次的情况

new Promise((resolve, reject) => {  setTimeout(() => resolve("result"), 2000)})  .then(result => console.log(result))  .finally(() => console.log("Promise end"))// result// Promise end

reject :

new Promise((resolve, reject) => {  throw new Error("error")})  .catch(err => console.log(err))  .finally(() => console.log("Promise end"))// Error: error// Promise end

注意:

  • finally 没有参数
  • finally 会将结果和 error 传递
new Promise((resolve, reject) => {  setTimeout(() => resolve("result"), 2000)})  .finally(() => console.log("Promise ready"))  .then(result => console.log(result))// Promise ready// result

手写一个 Promise.prototype.finally()

不管 Promise 对象最后状态如何,都会执行的操作

MyPromise.prototype.finally = function (cb) {  return this.then(function (value) {    return MyPromise.resolve(cb()).then(function () {      return value    })  }, function (err) {    return MyPromise.resolve(cb()).then(function () {      throw err    })  })}

最后

本文首发自「三分钟学前端」,回复「交流」自动加入前端三分钟进阶群,每日一道编程算法面试题(含解答),助力你成为更优秀的前端开发!

转载地址:http://yjbsi.baihongyu.com/

你可能感兴趣的文章
基本数据类型中的浮点类型
查看>>
SharePoint UserProfileService 接口列表 注解
查看>>
JAVA EE Demo[购物商城 Strust2]
查看>>
非刚性人脸跟踪 —— 面部特征检测器
查看>>
Perl:Perl的一些应用例子。
查看>>
mongodb排序限制输出, 分组查询,爬虫连接mongodb
查看>>
01-家居用品词汇(English)
查看>>
英语基础语法-时态(谓语动词的变化-一般时态/进行时态)
查看>>
Python常用的库简单介绍一下
查看>>
JavaScript Array创建数组
查看>>
3.5 其他常见的灰度变换技术
查看>>
vue版 文字滚动
查看>>
Vue项目通过JSSDK调用微信分享接口
查看>>
VUE开发
查看>>
linux host=${host:-"localhost"}使用方法
查看>>
扫描线概览
查看>>
15 个 Android 通用流行框架大全
查看>>
Android连接热点的Socket文件传输
查看>>
最全的Swift社交应用文本输入优化汇总
查看>>
Swift - 网页控件(UIWebView)加载本地数据,文件
查看>>