直接对于finally方法的特点进行解释:
promise的finally方法特点介绍,以及相关的测试代码
1.调用finally的promise实例,无论成功和失败都会进入finally中执行
const p=Promise.resolve(1);
const p1=Promise.reject(2);
const re=p.finally();
// const re1=p.finally();
console.log(re);
// console.log(re1);
2.finally的回调函数不接受任何参数
const p2=Promise.resolve(3);
const re2=p2.finally((v)=>{
console.log(v);
})
console.log(re2);
结果里面的内容log是undefined
对于返回值方面
1.没有回调函数的时候,直接穿透(上面代码已验证)
2.回调函数没有返回值或者返回的不是失败promise实例的时候,也是直接穿透
3.回调函数如果返回失败的promise,则finally返回的promise和回调函数返回的promise保持一致
const p3=Promise.resolve(4);
const re3=p3.finally(()=>{
return Promise.resolve("此刻我返回的是成功,返回的是p3内容,穿透");
})
const re33=p3.finally(()=>{
return Promise.reject("此刻我返回的是失败,没有穿透");
})
console.log(re3,re33);
4.回到函数中如果抛出异常,则finally直接返回失败的promise实例,值为异常信息
const p4=Promise.resolve(5)
const re4=p4.finally(()=>{
throw new Error("直接抛出错误");
})
console.log(re4);