内容
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的结果值