async 和 await 
作用 
async和await两种语法结合可以让异步代码像同步代码一样
async函数
async函数的返回值为promise对象,
promise对象的结果由async函数执行的返回值决定
js
// async 函数
async function fn() {
    // 返回一个字符串
    return 'squid-Xu'; // Promise {<fulfilled>: 'squid-Xu'}
    // 返回的结果不是一个Promise类型的对象,返回的结果就是成功Promise对象
    return; //Promise {<fulfilled>: undefined}
    // 抛出错误,返回的结果是一个失败的promise
    throw new Error('出错了'); // Promise {<rejected>: Error: 出错了
    // 返回的结果如果是一个 Promise 对象
    return new Promise((resolve, reject) => {
        // resolve('success');  // 成功的结果
        reject('error'); // 失败的结果
    });
}
const result = fn();
console.log(result);- await表达式
 
await必须写在async函数中
await右侧的表达式一般为promise对象
await 返回的是promise成功的值
await的promise失败了,就会抛出异常,需要通过try…catch 捕获处理
js
// 创建 promise 对象
const p = new Promise((resolve, reject) => {
    resolve('success'); // 成功的结果
    // reject('error'); // 失败的结果
});
// await 要放在 async 函数中
async function main() {
    try {
        let result = await p;
        console.log(result); //success
    } catch (error) {
        console.log(error);
    }
}
// 调用
main();