异步(async)函数
异步函数声明: async function foo() {}
异步函数表达式: const foo = async function () {};
异步方法定义: let obj = { async foo() {} }
异步箭头功能: const foo = async () => {};
异步函数总是返回Promises
|
|
Promise 对象的状态变化
async函数完全可以看作多个异步操作,包装成的一个 Promise 对象,而await命令就是内部then命令的语法糖。
async函数返回的 Promise 对象,必须等到内部所有await命令后面的 Promise 对象执行完,才会发生状态改变,除非遇到return语句或者抛出错误。也就是说,只有async函数内部的异步操作执行完,才会执行then方法指定的回调函数。
下面是一个例子。
|
|
上面代码中,函数getTitle内部有三个操作:抓取网页、取出文本、匹配页面标题。只有这三个操作全部完成,才会执行then方法里面的console.log。
await
|
|
|
|