promise的catch和finally方法
1:catch方法 具体看代码
1 const promise = new Promise((resolve, reject) => { 2 // resolve() 3 // reject('rejected meaasge') 第一种写法 4 //第二种写法 抛出异常 5 throw new Error("rejected message") 6 }) 7 //1当executor 抛出异常后,也是会调用错误捕获的回调函数的 8 promise.then(undefined, (err) => { 9 console.log(err); 10 console.log('-----------'); 11 }) 12 //2通过catch来传入拒绝(错误)捕获的回调函数 就不用传入resolve的回调函数 13 promise.catch((err) => { 14 console.log(err); 15 console.log('-----------'); 16 }) 17 //3:语法糖 这里回调的还是原来的promise 而不是then方法的新promise 18 promise.then(res => { 19 throw new Error('then的error') 20 }).catch(err => { 21 console.log(err); 22 }) 23 //4:catch的返回值 本身也是返回promise 24 promise.then(res => { 25 throw new Error('then的error') 26 }).catch(err => { 27 console.log(err); 28 return 'catch retrun value' 29 }).then(res => { 30 console.log(res); 31 }).catch(err => { 32 console.log(err); 33 })
2:finally方法 具体看代码
1 //finally 无论fullfiled还是rejected状态都会执行 2 const promise = new Promise((resolve, reject) => { 3 // resolve('heihei') 4 reject('error message') 5 }) 6 promise.then(res => { 7 console.log(res); 8 }).catch(err => { 9 console.log(err); 10 }).finally(() => { 11 console.log('finnally始终会执行'); 12 })


浙公网安备 33010602011771号