async / await
+ ES7 的语法
=> ES6 提出的方案, 但是 ES6 实现的不是很好
=> 再 ES7 的时候优化过
+ 目的:
1. 回调地狱的终极解决办法
2. 把异步代码写的看起来像同步代码
语法:
1. async 书写再函数的前面, 是对这个函数的修饰关键字
2. await 的使用, 必须有 async 关键字, await 才可以再函数内部使用
3. await 等待的必须是一个 promise 对象, 才会有等待的结果, 不然没有意义
+ 当你满足了以上三个条件以后, 你的 promise 对象本该再 then 里面接收的结果
=> 就可以直接定义变量接收
=> 你的 promise 里面的异步代码没有结束之前
=> 不会继续向下执行
const div = document.querySelector('div') div.addEventListener('click', async () => { const res1 = await pAjax({ url: './server/a.php', dataType: 'json' }) console.log('需求1: ', res1) const res2 = await pAjax({ url: './server/b.php', dataType: 'json', data: res1 }) console.log('需求2: ', res2) const res3 = await pAjax({ url: './server/c.php', dataType: 'json', data: res2 }) console.log('需求3: ', res3) })