当前位置:   article > 正文

async和await_注意事项_const res = await

const res = await

1.await 必须用在async修饰的函数内

  1. // 1. await必须用在被async修饰的函数内, 函数内无await, 则async可省略
  2. // 报错: await is only valid in async functions
  3. function myFn() {
  4. const res = await 1
  5. }
  6. myFn()

2.async修饰后, 此函数为异步函数

  1. // 在此函数内, 遇到await会暂停代码往下, 但不影响外面继续执行同步流程
  2. // 等所有主线程同步代码走完, 再执行await并继续向下
  3. console.log(1);
  4. async function myFn() {
  5. console.log(2);
  6. const res = await 3
  7. console.log(res);
  8. console.log(4);
  9. }
  10. console.log(5);
  11. myFn()
  12. console.log(6);

3.await之后一般跟promise 

  1. await后面一般跟Promise对象
  2. // 如果跟的是非Promise对象, 则等待所有同步代码执行后, 把此结果作为成功的结果留在原地使用
  3. // 如果是Promise对象, 则等待Promise对象内触发resolve返回成功结果, 在原地使用
  4. let p = new Promise((resolve, reject) => {
  5. setTimeout(() => {
  6. resolve(1)
  7. }, 2000)
  8. })
  9. console.log(1);
  10. async function myFn() {
  11. console.log(2);
  12. const res = await p
  13. console.log(res);
  14. console.log(4);
  15. }
  16. console.log(5);
  17. myFn()
  18. console.log(6);

4.await不能捕获失败结果, 需要使用try+catch关键字捕获

  1. /*
  2. try和catch语法
  3. try {
  4. // 这里放可能在执行中报错的代码
  5. // 如果报错会终止代码继续执行, 直接跳转进catch里执行
  6. } catch (err) {
  7. // err接收try大括号内报错抛出的异常代码
  8. }
  9. */
  10. let p = new Promise((resolve, reject) => {
  11. setTimeout(() => {
  12. // resolve(1)
  13. reject(new Error('失败'))
  14. }, 2000)
  15. })
  16. async function myFn() {
  17. try {
  18. const res = await p
  19. console.log(res);
  20. } catch (err) {
  21. console.error(err)
  22. }
  23. }
  24. myFn()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/294640
推荐阅读
相关标签
  

闽ICP备14008679号