async函数定义

  1. async函数的执行与普通函数一摸一样,只需要执行即可
  2. 调用async函数返回一个Promise对象。如果里面还有return语句返回值将作为then方法的参数
  3. 必须等到await命令后面的Promise对象执行完,才会使得async返回的Promise对象的状态发生改变
async function f() {
  return 'hello world';
}

f().then(v => console.log(v))
// "hello world"

await

async表示函数里面有异步操作和Promise类似相当于状态机,await表示紧跟在后面的表达式需要等待结果。

await后面的Promise进行异常捕获

async function f() {
  await Promise.reject('出错了')
    .catch(e => console.log(e));
  return await Promise.resolve('hello world');
}
async function f() {
  try {
    await new Promise(function (resolve, reject) {
      throw new Error('出错了');
    });
  } catch(e) {
  }
  return await('hello world');
}

多异步操作触发

如果多个await命令不存在继发关系,应该让它们同时触发

let [foo, bar] = await Promise.all([getFoo(), getBar()])