首先promise是es6提供一种异步解决方案. 通过promise能够解决回调地狱问题. 所谓的这个回调地狱指的当我们执行完一个操作之后在接受着操作的结果只能通过回调函数的方式进行接受,使用回调函数的方式存在的弊端就是写法非常臃肿,并且后期难以维护,所谓es6给我提供了一种新的解决方案,就是promise来进行解决,promise可以通过链式调用的方式来解决层层嵌套的问题,但是写法上也不是非常好,所以我们最终的替代方案是使用async和await
promise一共有三个状态,分别是进行中,成功或者失败 如何成功的话可以通过resolve方法将正确结果返回出去,通过.then的方式进行接受,失败的话可以通过reject的方式将失败的结果返回出去,通过.catch的方式进行接受,pending状态是进行中,一旦进行之后,他的状态是不可逆的
如果要使用promise,我们需要对promise进行实例化,在实例化的构造函数里面有一个回调函数,这个回调函数里面有那个参数,分别是resolve和reject,我们可以通过promise的实例化对象调用.then或者.catch方式接受结果
promise还给我们提供了.all 和 race, 其中all方法的作用是将多个请求合并成一个请求, 比如当首页要请求10个接口,我们可以promise.all进行合并,.race的作用也可以将多个请求合并成一个请求,不过是谁先请求成功就先返回谁.
promise实例
// 第一步:先写一个函数
function fetch ( options ){
// 第二步:实例化promise
let p = new Promise(( resolve,reject ) => {
// 第三步:放一个异步操作,我这里放的的是小程序的请求
wx.request ({
url: options.url,
data: o