Promise 对象代表了未来将要发生的事件,用来传递异步操作的消息
Promise 特点
三个状态
- pending (初始状态)
- fulfilled (操作"成功")
- reject (操作"失败")
两个过程
- padding ==> Resolved
- padding ==> Rejected
- 只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果
Promise 创建
const p = new Promise(function(resolve, reject) {
// 异步处理
// 处理结束后、调用resolve(解析) 或 reject(拒绝)
// 在回调中执行一些操作,如果一切都正常,则调用 resolve,否则调用 reject
})
Promise.prototype.then 方法会返回一个新的Promise 对象 可以使用链式编程解决回调地狱
Promise.prototype.catch 用于捕获发生的错误
reject 与 catch 的区别
- reject 用来抛出异常, catch 用来处理异常
- reject 是Promise 的方法, catch 是Promise 实例的方法
- reject 抛出的异常会进入.then的第二个回调,若没有则进入catch
- 网络异常会直接进入catch
async / await
用来解决异步操作
async 修饰函数 内部await 表示一个异步
函数执行时,一旦遇到await就会先返回,等到异步操作完成再执行函数体内后面的语句
用async修饰的函数返回一个 Promise 对象, 配合await可以直接得到Promise执行结果,代码更简洁