async+await 笔记

135 阅读1分钟

async 和 await ES7新增的关键字, 为了解决异步代码写起来十分繁琐的问题。 两者结合, 可以让我们像写同步代码一样写异步代码。

async :用来声明异步函数。
await: 等待promise的执行结果


async
1. async写在普通函数定义的前面。
2. 返回值为promise对象。
3. promise对象的值由async函数的返回值决定。
3.1 如果返回值不是一个promise对象, 返回的是成功的promise对象。 值为返回的内容。
3.2 如果返回值是一个promise对象, 则返回的是该promise对象, 值为resolve或者reject的参数
3.3 如果函数抛出一个错误, 返回的值为一个失败的promise对象, 对象的值为错误信息。

await
 之前使用promise或者回调函数来解决异步问题的时候
对异步操作的结果进行操作的时候, promise需要将相关代码写在then函数中。
回调函数则需要将相关代码写在回调函数中

异步函数主要针对不会马上就完成的操作。
如果需要结果, 需要等待操作的完成。

1. await 必须写在async函数内。 但是async函数中可以没有await2. await右侧一般为promise对象。 也可以是其他值, 但是不推荐。
3. await的返回值就是promise成功的值。
4. await后面跟的promise对象失败了, 就会抛出异常。
使用try - catch来处理异常。
catch中的error的值指向reject的参数。


async function fn() {
  const p = new Promise((resolve, reject) => {
    // resolve("成功执行了");
    reject("有错误发生了")
  })
  //
  // p.then((data)=>{
  //     console.log(data);
  // })
  try {
    let result = await p;
    console.log(result);
  } catch (error) {
    console.log(error);
  }
}
fn();