promise是什么,用过吗?

【问】promise是什么?

【答】promise是一种异步编程解决方案,主要解决了:当有先后依赖的多个异步任务时,层层嵌套的回调写法不灵活、容易滋生bug、且难以维护的问题。promise有如下特点:

  1. Promise对象代表一个异步操作,有三种状态pending(任务进行中)、resolved(任务已成功)、rejected(任务已失败)。且状态变化只有两种途径:pending变为resolved(任务成功了)、pending变为rejected(任务失败了)
  2. Promise使用上,标准结构如下:
    在这里插入图片描述
  3. Promise使用上,最佳实践如下:即不要在每个then中都传失败回调,而是在catch中统一处理(因为在不传失败回调的情况下,reject也会触发catch,参考代码测试1):
    在这里插入图片描述

【扩展1】promise常用总结如下

  1. Promise.all:
    Promise.all(iterable) 方法接收一个Promise对象组成的数组作为参数,当这个数组所有的Promise对象状态都变成resolved或者rejected的时候,才会去调用then(全为resolved时,触发then的成功回调,否则触发失败回调)
  2. Promise.race:
    Promise.race(iterable) 方法接收一个Promise对象组成的数组作为参数,当这个数组中其中一个Promise对象状态都变成resolved或者rejected的时候,才回去调用then。
  3. Promise.catch:
    Promise.catch等价于Promise.then(null, rejection)或.then(undefined, rejection)
    注:Promise 对象的错误具有“冒泡”性质,会一直向后传递,直到被捕获为止。也就是说,错误总是会被下一个catch语句捕获

【测试1】 reject和catch

在这里插入图片描述

【测试2】多个then,return新promise

在这里插入图片描述

【测试3】多个then,return 普通值

在这里插入图片描述

参考1:MDN:使用 Promise
参考2:透彻掌握Promise的使用,读这篇就够了
参考3:关于promise中reject和catch的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值