async 和 await 
async 函数 
1、函数的返回值为
promise对象2、
promise对象的结果由async函数执行的返回值决定
js
async function main() {
    // 如果返回值是一个非promise类型的数据,结果就是一个成功的promise对象
    // return 1;
    // 如果返回值是一个promise对象,结果根据由返回值决定
    // return new Promise((resolve, reject) => {
    // 	resolve(1);
    // });
    // 抛出异常,结果就是一个失败的promise对象
    throw 'err';
}
let res = main();
console.log(res);await 表达式 
1、
await右侧的表达式一般为promise对象,但也可以是其他的值2、如果表达式是
promise对象,await返回的是promise成功的值3、如果表达式是其他值,直接将此值作为
await的返回值
注意
- 1、
await必须写在async函数中,但async函数中可以没有await - 2、如果 
await的promise失败了,就会抛出异常,需要通过try catch捕获异常 
js
async function main() {
    let p = new Promise((resolve, reject) => {
        resolve('ok');
    });
    // 右侧为 promise 的情况
    // let res = await p;
    // console.log(res);
    // 右侧为其他类型的值
    // let res = 10;
    // console.log(res);
    // 如果promise 是失败的情况
    try {
        let res = await p;
        console.log(res);
    } catch (error) {
        console.log(error);
    }
}
main();