关于我所知道的promise用法

1、promise是用来解决异步的一个对象
第一,reject是用来抛出异常的,catch是用来处理异常的;
第二:reject是Promise的方法,而then和catch是Promise实例的方法(Promise.prototype.then 和 Promise.prototype.catch)。
三种状态:pending(初始化)、fulfilled(成功)、rejected(失败)
2、promise的then和catch属于微任务
链式调用原因

promise.then(res => {
	// return promise
}, error => {
	// return promise
}).catch(error => {
	// return promise
})

3、关于promise的error
(1)如果promise内部reject或者throw一个错误,then的第二个参数error回调存在的话就会执行,不走catch,不存在就会直接走catch

例:let mypromise = new Promise((resolve, reject) => {
reject('error')throw new Error(‘抛出错误')
})
第一种:mypromise.then(res => {}, error => {
// 这里执行
}).catch(error => {// 这不执行})
第二种:mypromise.then(res => {}).catch(error => { // 这里执行 })

(2)如果promise.then()抛出错误,那么只有catch能捕捉到,then的第二个参数error捕捉不到

const mypromise = new Promise((resolve, reject) => {
      resolve()
  })
  mypromise.then(res => {
      throw new Error('then抛出错误')
  }, error => {
      console.log(111, error)
  }).catch(error => {
      console.log(222, error) // 执行
  })

4、promise的几种用法
(1)promise.all
处理多个promise实例,数组形式
promise.all([promise1, promise2]).then().catch
必须两个都成功才会走then,只要有一个reject了就会走catch

例:const fun1 = new Promise((resolve, reject) =>{
	resolve('成功')
})
const fun2 = new Promise((resolve, reject) => {
	reject(‘失败')
})
promise.all([fun1, fun2]).then(res => {
	// fun1和fun2都为resolve的时候打印结果
	// res['结果1', '结果2']
}, error => {
	// 这个回调存在且执行
}).catch(error => {
	// 否则走这里
})

(2)promise.race
用法同promise.all
区别在于:多个promise实例哪个执行的快就返回哪个,不管本身是成功还是失败状态

const fun1 = new Promise((resolve, reject) => {
	setTimeout(() => { resolve('成功’) }, 1000)
})
const fun2 = new Promise((resolve, reject) => {
	setTimeout(() => { resolve('成功111) }, 300)
})
promise.race([fun1, fun2]).then(res => {
	// res 为 成功111
}).catch(error => {})

(4)promise.allsettled
多个promise实例全部执行完成后,不管成功或失败都会返回,返回一个数组,各个promise实例的状态和结果

const promise1 = Promise.resolve(10)
const promise2 = new Promise((resolve, reject) =>{
setTimeout(() => {
reject(‘失败了')
}, 2000)
})
Promise.allsettled([promise1, promise2]).then(res => {
	// res为一个数组,具体见图
})

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Promise.reject和return Promise.reject的区别在于使用方式和返回值的处理。 1. 使用方式:return Promise.reject可以直接在函数中使用return语句返回一个Rejected状态的Promise对象,而Promise.reject需要通过Promise.reject(reason)方法来返回一个Rejected状态的Promise对象。 2. 返回值的处理:return Promise.reject将Rejected状态的Promise对象作为函数的返回值直接返回,可以在函数外部使用.catch方法来处理被拒绝的Promise。而Promise.reject需要在.then方法中使用.reject方法或.catch方法来处理被拒绝的Promise。 例如,使用return Promise.reject('error')会直接返回一个Rejected状态的Promise对象,并且可以在调用函数的地方使用.catch方法来捕获并处理这个被拒绝的Promise。而Promise.reject('error').catch会将错误传递给.catch方法来处理。 总结起来,return Promise.reject可以更方便地在函数中返回一个被拒绝的Promise对象,而Promise.reject需要在.then方法或.catch方法中处理被拒绝的Promise对象。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Promise.resolve() 和Promise.reject() 使用及其覆盖场景](https://blog.csdn.net/qq_40696108/article/details/123063870)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值