Promise的then、catch、finally、async、await

1、then、catch、finally

对于Promise一直使用async、await,而对它的then、catch、finally这三个方法都快忘了怎么用了。

  1. then
    接收两个方法作为参数,第一个参数是成功的回调,第二个参数是失败的回调。
  2. catch
    相当于 then(undefined, onRejected)
    catch方法拥有一个参数
  3. finally
    finally 方法用来指定在 promise 结束时,无论结果是 fulfilled 或者是 rejected,都会执行的回调函数
    finally 方法的回调函数不接受任何参数

在Promise中如果没有用resolve或reject改变Promise的状态,那么,
在then中将不能调用成功回调、也不能调用失败回调
在catch中的错误回调也调不到
在finally中的回调也调不到。

2、async、await

  1. 使用async和await,那么在函数中一定要确保被resolve或者reject掉。否则函数一直处于await状态,那么就会一直阻塞在这里,走不下去。
  2. 使用await只能获取到resolve的值,而reject的值是获取不到的。
    假设fa是一个异步函数,
let a=await fa(n).catch(()=>{});

那么当fa中reject时,就会走到catch中的回调中去,这个回调是一个空函数,相当于return undefined;
那么await得到的就是这个undefined。


版权声明:本文为longtengg1原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。