为了解决回调地狱问题,从而给出的解决办法:
/** * Promise * * 1. Promise 是 一个构造函数 new Vue() * 2. Promise() 里面有个参数, 参数就是一个回调 () => {} * 回调也有参数 * resolve f 操作成功的时候调用resolve => 调用 resolve => then() * reject f 操作失败的时候调用reject * 3. 在 Promise里面放一个异步操作 /** * 1. p 什么类型 Promise类型 * 2. axios.get() Promise 类型 * 3. axios.get().then() * 4. p.then() * xxxx.then() xxxx 大多数就是个promise */ const p = new Promise((resolve, reject) => { console.log('准备开始执行异步操作了') // 举例 : 来一个异步操作 setTimeout(() => { // 假如操作成功了 成功 == resolve == then // resolve('成功了') // 假如操作失败了 失败 == reject == catch reject('失败了') }, 1000) }) p.then(res => { console.log('走then了', res) }).catch(err => { console.log('走catch了', err) }) // axios.get().then()* 缺少async : SyntaxError: await is only valid in async function
* 缺少await : 打印的就是 promise 类型
* 2. 如何处理 async 和 await 的异常情况
* try…catch() 如果没有问题 => 跳过 catch, 如果有问题就会被catch 捕获
* 3. async 就近原则, async 添加到 await最近的函数前面 (小心回调)
Promise的三种状态
* pending 待定
* fulfilled 完成 <== resolve() 成功
* rejected 拒绝 <== reject() 失败