Promise API


1. Promise构造函数

Promise的构造函数:

Promise(excutor) {}

1.excutor 函数:执行器

(resolve,reject) => {}

2.resolve函数:内部定义成功时,我们调用的函数

value => {}

3.reject函数:内部定义失败时,我们调用的函数

reason => {}

⚠️:
executor会在Promise内部立即同步调用异步操作在执行器中执行


2. Promise.prototype.then 方法

Promise.prototype.then方法:

(onResolved,onRejected) => {}
  • onResolved:成功的回调函数
value => {}
  • onRejected:失败的回调函数
reason => {}

⚠️:返回一个新的promise对象


3. Promise.prototype.catch 方法

Promise.prototype.catch方法:

(onRejected) => {}

catch()只能传一个参数:失败的回调


4. Promise.resolve 方法

这个resolve方法是属于Promise函数对象,但并不属于实例对象

这个方法接收一个参数,这个参数是:

  • 成功的值
  • promise对象

返回值:一个成功失败promise对象

const p1 = Promise.resolve('hello resolve');
console.log(p1);

const p2 = Promise.resolve(new Promise((resolve,reject) => {
  resolve('ok');
}))
console.log(p2);

const p3 = Promise.resolve(new Promise((resolve,reject) => {
  reject('error');
}))
console.log(p3);

在这里插入图片描述
如果传入的参数不是promise类型的对象,那么我们传入的就是成功的值,返回的就是一个成功的promise对象

如果传入的参数是promise类型的对象,那么这个参数的结果决定了resolve的结果。这个promise对象参数成功则resolve返回的promise对象成功,这个promise对象参数失败则resolve返回的promise对象失败


5. Promise.reject 方法

这个reject方法是属于Promise函数对象,但并不属于实例对象

这个方法接收一个参数,这个参数是失败的值
返回值:一个失败promise对象

const p1 = Promise.reject('hello reject');
console.log(p1);

在这里插入图片描述


6. Promise.all 方法

这个all方法是属于Promise函数对象,但并不属于实例对象

这个方法接收一个参数,是一个由promise对象组成的数组

返回值:一个promise对象。状态由数组中的promise对象决定,这个数组中所有的promise对象状态都是成功,才算成功

// promise对象均成功时
const p1 = new Promise((resolve,reject) => {
  resolve("ok1");
})

const p2 = Promise.resolve("ok2");
const p3 = Promise.resolve(new Promise((resolve,reject) => {
  resolve("ok3");
}))

const result = Promise.all([p1,p2,p3]);
console.log(result);

在这里插入图片描述
当返回的promise对象是成功的,其结果值是每一个promise对象的成功值组成的数组

// promise对象有失败时
const p1 = new Promise((resolve,reject) => {
  resolve("ok1");
})

const p2 = Promise.resolve("ok2");
const p3 = Promise.resolve(new Promise((resolve,reject) => {
  reject("not ok");
}))

const result = Promise.all([p1,p2,p3]);
console.log(result);

在这里插入图片描述
当返回的promise对象是失败的,其结果值是那个失败的promise对象的失败值


7. Promise.race方法

这个race方法是属于Promise函数对象,但并不属于实例对象

这个方法接收一个参数,是一个由promise对象组成的数组

返回值:一个promise对象。状态由数组中第一个改变状态的promise对象决定

const p1 = new Promise((resolve,reject) => {
  resolve("ok1");
})

const p2 = Promise.resolve("ok2");
const p3 = Promise.resolve(new Promise((resolve,reject) => {
  reject("not ok");
}))

const result = Promise.race([p1,p2,p3]);
console.log(result);

很明显这里是p1先改变状态:
在这里插入图片描述

如果延迟给p1改变状态:

const p1 = new Promise((resolve,reject) => {
  setTimeout(() => {
    resolve("ok1");
  },1000)
})

const p2 = Promise.resolve("ok2");
const p3 = Promise.resolve(new Promise((resolve,reject) => {
  reject("not ok");
}))

const result = Promise.race([p1,p2,p3]);
console.log(result);

那现在第一个改变状态的是p2,返回值状态就是p2的状态,返回值结果就是p2的结果值
在这里插入图片描述


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值