async
async
async可以看做是 Generator 函数的语法糖。
var asyncRead = async function () {
var f1 = await 12*12;
var f2 = await 14*13;
console.log(f1.toString());
console.log(f2.toString());
};
var res=asyncRead();
//144
//182async函数自带执行器,与普通函数一模一样,只要一行。不像Generator函数,需要调用next方法。
yield命令后面只能是 Thunk 函数或 Promise 对象,而async函数的await命令后面,可以是Promise 对象和原始类型的值。
async函数返回的是 Promise 对象,可以使用then方法添加回调函数。
// 函数声明
async function foo() {}
// 函数表达式
const foo = async function () {};
// 对象的方法
let obj = { async foo() {} };
obj.foo().then(...)Promise 对象
return语句返回的值,会成为then方法回调函数的参数。async函数内部抛出错误,会导致返回的 Promise 对象变为reject状态。抛出的错误对象会被catch方法回调函数接收到。
如果不想后序的代码中断,可以使用try...catch结构。
或者后面添加一个catch方法:
async 函数的实现原理
async 函数的实现原理,就是将 Generator 函数和自动执行器,包装在一个函数里。
spawn函数就是自动执行器:
Last updated
Was this helpful?