async函数的实现原理,就是将Generator函数和自动执行器,包装在一个函数里。
async函数返回Promise对象,async函数的return值是then方法的参数,await后跟Promise对象或者数值,字符串,布尔值。
await命令后面的Promise对象,运行结果可能是rejected,所以最好把await命令放在try...catch代码块中。
一、错误捕获
// 用try catch实现 async function demoFn() { try { await somethingThatReturnsAPromise(); throw new Error('oneerror'); } catch (err) { console.log(err); } } // 用Promise的catch()方法实现 async function demoFn() { await somethingThatReturnsAPromise() .catch(function (err) { console.log(err); }); }
二、继发和并发操作
// 继发 let foo = await getFoo(); let bar = await getBar(); // 并发 let [foo, bar] = await Promise.all([getFoo(), getBar()]);
三、异步遍历器接口
四、for await of