javascript中的anync/await

javascript中的async,await

Async( 声明一个异步函数)

  1. 自动将常规函数转换为Promise
  2. 异步函数允许使用await
  3. 当调用异步函数时,使用其主体中返回的内容。

Await(暂停异步函数的执行)

  1. 当置于Promise调用前面时,await强制其余代码等待,直到该Promise完成并返回结果。
  2. await仅适用于Promises,它不适用于回调。
  3. await只能在异步函数内部使用(在ansyc中)。

使用async/await会比Promise好嘛?

  1. 使用Async / Await时,我们仍在使用Promise。
async function getABC() {
  let A = await getValueA(); // 2 second to finish
  let B = await getValueB(); // 4 second to finish
  let C = await getValueC(); // 3 second to finish

  return A*B*C;
}
async function getABC() {
  // Promise.all()允许我们同时发送所有请求。
  let results = await Promise.all([ getValueA, getValueB, getValueC ]); 
  return results.reduce((total,value) => total * value);
}
  • 第二种方法优于第一种方法,第一种方法需要等待第一个方法执行完才执行第二方法....,第二种方法异步执行,等到所有的都执行完毕,显示。
  • 如果多次异步请求得到的值不相互影响,建议使用Promise,否则建议使用async/await;

如何处理Async / Await中的错误

  1. 使用try / catch块中捕获任何意外错误;

    • async function doSomethingAsync(){
          try {
              // 此异步调用可能会失败.
              let result = await someAsyncCall();
          }
          catch(error) {
              // 我们将在这里发现错误
          }
      }
      
    •  const result = await someAsyncCall().catch()
      
posted @ 2021-06-10 17:19  lixingqian  阅读(210)  评论(0)    收藏  举报