catch和then和finally的用法
const p1= new Promise( (resolutionFunc,rejectionFunc) => {
1:resolutionFunc()
2:rejectionFunc()
3:console.long(a) 或者 throw 'a';
});
let p2 = p1.then()
let p3 = p1.then(v => { console.log(v) })
let p4 = p1.then(v => { return '444' })
1:new Promise里面写resolutionFunc(),就会触发p1.then(),第一个参数,并执行
2:new Promise里面写rejectionFunc(),就会触发p1.then(),第二个参数,并执行
3:new Promise里面写错误代码,就会触发p1.then(),第二个参数,并执行
4:若p1.then()的第二个参数没有写,那么就会触发.p1.catch(),并执行
5:若p1.then()的第二参数和p1.then().catch()同时存在,出现异常,优先选择then里面的执行
6:new Promise,除了里123这种类型,其他的不会触发then,因为不会把pending状态改变
7:p1.then()整体是什么状态,取决于上一个是什么状态
8:.then整体的值是什么,【成功】
a:当代码里什么都没有,return上一个的值,
b:当代码体写了代码,没有写return,那就是return undefined
c:当代码体写了代码,写return,那就是return写的那个值
9:.then整体的值是什么,【失败】
a:当代码里什么都没有,return上一个的值,
b:当代码体写了代码,没有写return,那就是上一个值
c:当代码体写了代码,写return,那就是return写的那个值
10:不管promise最后的状态,在执行完then或catch指定的回调函数以后,都会执行finally方法指定的回调函数。
tips:new promise必须把状态改变,才能执行下面的then代码,而then虽然返回的也是实例,不需状态改变,因为会使用上一个的状态