Promise
通过 new Promise(),传递两个函数进去,一个为请求成功的回调 resolve,一个为请求失败的回调 reject
当调用 resolve() 的时候,会进入到 Promise.then(),可以拿到 resolve 传递出来的值进行下一步操作
当调用 reject() 的时候,会进行 Promise.catch() ,可以拿到 reject 传递出来的值进行下一步操作
通过resolve() 函数调用的时候,可以传递的参数
- 普通对象或者值
- 传入一个 Promise对象,那么当前 Promise 的状态由传入的Promise决定
- 传入一个带有then()方法的对象,会自动执行该then方法,此时Promise的状态由 then( resolve,reject)中决定
// const newPromise = new Promise((resolve, reject) => {
// reject()
// })
const objPromise = {
then(resolve,reject){
console.log('123');
resolve()
}
}
new Promise((resolve, reject) => {
console.log('-------');
resolve(objPromise)
}).then( res=>{
console.log(res,'这是resolve');
}).catch((err) => {
console.log(err,'这是reject');
})
.then()
使用.then()方法,是可以有返回值的
他的返回值是一个新的Promise对象,并且执行这个新的Promise对象的resolve方法,所以这就可以形成Promise的链式调用
const newpromise = new Promise((resolve,reject)=>{
resolve()
})//使用 Promise函数,调用resolve()
newpromise.then((res)=>{
return 111
})//return 相当于返回了一个新的Promise对象,然后执行了里面的resolve方法
.then((res)=>{
console.log(res,'打印res')
})//此时的then方法相当于接收上面返回的新的Promise对象,resolve给的值
///如果返回的是一个Promise对象的话,也会再创建一个Promise对象,并且将之前常见的放入resolve里面,Promise对象的状态的话,由最后一个Promise对象决定
.catch()
.catch方法和.then方法一样,都会返回一个Promise对象
.finally()
该方法无论什么状态都会执行
Promise.resolve()
该方法相当于,new Promise,然后resolve(),里面传递的参数有三种情况
Promise.reject()
该方法相当于 ,new Promise,然后Reject,里面的参数没有三种情况,不管里面的参数是什么都会调用.catch()抛出
Promise.all( [] )
同时执行多个Promise,只有等所有的函数都 返回resolve之后,才会执行then,但凡一个返回Reject,都会执行catch
Promise.allSettled()
同时执行多个Promise,返回的结果会标注 发起的Promise的状态
Promise.race()
里面哪个Promise 执行的快,使用哪个Promise里面的状态进行回调
Promise.any()
会等到第一个Promise返回 resolve,执行then()
如果全部都返回 reject(),则会调用catch()方法,并且告知所有请求都返回 reject