1、then、catch、finally
对于Promise一直使用async、await,而对它的then、catch、finally这三个方法都快忘了怎么用了。
- then
接收两个方法作为参数,第一个参数是成功的回调,第二个参数是失败的回调。 - catch
相当于 then(undefined, onRejected)
catch方法拥有一个参数 - finally
finally 方法用来指定在 promise 结束时,无论结果是 fulfilled 或者是 rejected,都会执行的回调函数
finally 方法的回调函数不接受任何参数
在Promise中如果没有用resolve或reject改变Promise的状态,那么,
在then中将不能调用成功回调、也不能调用失败回调
在catch中的错误回调也调不到
在finally中的回调也调不到。
2、async、await
- 使用async和await,那么在函数中一定要确保被resolve或者reject掉。否则函数一直处于await状态,那么就会一直阻塞在这里,走不下去。
- 使用await只能获取到resolve的值,而reject的值是获取不到的。
假设fa是一个异步函数,
let a=await fa(n).catch(()=>{});
那么当fa中reject时,就会走到catch中的回调中去,这个回调是一个空函数,相当于return undefined;
那么await得到的就是这个undefined。