是一个前端异步解决方案
- Promise是一个构造函数,接受一个函数作为参数,这个函数在实例化的时候会作为执行器立即执行。
- 作为参数的函数节后两个函数作为参数,resolve和reject,由js引擎提供,resolve负责返回异步成功的结果,reject返回异步失败的原因。
- promise实例有三种状态,pending:还在进行异步请求。fulfilled:异步请求成功。rejected异步请求失败。当resolve执行后,状态由pending变成fulfilled。触发Promise.prototype.then(onResoleved)回调。当执行reject,状态由pending变为rejected。触发Promise.prototype.then(onRejected)回调。
- Promise.prototype.then(onRejected)语法糖是p.catch()
基本使用demo
链式调用1 demo
这种写法核心在于: 在外层Promise的then回调中,再发起一个promise的异步请求,在其then中,继续发起下一个Promise请求
这种写法虽然可以控制链式调用顺序,各司其职,代码逻辑明确一点。但是每次需要在上一级别的then中发起一个promise,还是有点嵌套的感觉
链式调用2 demo
这种写法的核心在于: 在第一个Promise的then中,返回一个新的Promise,新的Promise异步操作后,继续resolve/reject结果。
这种写法更好,每个promise相对独立