async 和 await 是 ES2016/ es7 新增的两个关键字, 它们借鉴了 ES2015 中生成器在实际开发中的应用。 目的是为了简化Promise api 的使用, 并非替代 Promise async:目的是为了简化在函数的返回值中对Promise的创建 例如: async function test() { console.log(1); return 2; // resolve // throw reject } // 等效于 function test() { return new Promise((resolve, reject) => { console.log(1); resolve(2); }) } await: 关键字必须出现在async函数中 await 等待的是thenable里面成功的状态 async function test() { const result = await 1; console.log(result); } // 等效于 function test() { return new Promise((resolve, reject) => { Promise.resolve(1).then(data => { const result = data; console.log(result) resolve(); }) }) } 上面的那种方法处理的是promise的正常状态,如何处理错误状态呢? function getRandom() { if (Math.getRandom < 0.5) { return 1; } else { throw 2; } } async function test() { try { const result = await getRandom(); console.log("正常状态", result); } catch{ console.log("错误状态",err) } } /** * @description: 使用promise 改造 计时器 * @param : * @return: */ function delay(duration) { return new Promise((resolve, reject) => { setTimeout(() => { resolve(); }, duration); }) }