resove and reject
使用es6 回调函数的例子1 | let promise = new Promise(function (resolve, reject) { |
resolve 和 reject , 这两个参数是两个函数, 用来执行回调的作用resolve resove 是作为异步回调成功之后需要执行的函数 reject reject 是作为异步回调失败之后需要进行执行的函数在 promise 的对象中, 可以通过进行判断来选择执行 resolve 或者 reject 函数使用
promise 进行 ajax 请求的函数如下:1 | /** |
promise.then()
在创建完成 promise 实例之后, 可以调用 promise.then() 中指定具体的回调成功或者失败的具体函数promise.then() 用于接收两个回调函数作为参数, 第一个回调函数是当 Promise 对象状态变为 resolve 的时候执行的函数,表示上面的 resolve 函数, 第二个回调函数是当 Promise 对象状态变为reject 的时候执行的函数, 也就是表示上面的 reject 函数,这两个函数都可以接收 promise 传入的值作为函数参数
1 | promise.then(function(value) { |
promise.all()
使用 promise.all() 方法用于将多个promise 实例, 包装为一个 promise 实例Promise.all([promise1, promise2, promise3])使用 Promise.all 接收的是一个数组作为参数, 其中 promise1 promise2 promise3 分别是 Promise 的实例关于使用 Promise.all 的状态:- 只有
promise1 promise2 promise3的状态都变成了fullfilled的状态,Promise.all的状态才会变成fullfilled并且三个promise的返回值组成一个数组, 传递给Promise.all的回调函数。 - 当三个
promise中存在一个为reject的时候,Promise.all的状态就会变成reject, 这个时候 , 被reject实例 的返回值被传递给Promise.all的回调函数.
1 | const firstNamePromise = namePromise.then(getFirstName); |
1 | let a = 2; |
promise .race()
使用promise.race() 类似于 promise.all 方法, 将多个 promise 实例包装为一个 promise 方法let p = promise.race([p1, p2, p3]) 只要上面的 p1, p2, p3 中有一个的实例率先发生变化, 那么 p 的状态就会发生变化, 率先发生变化的返回值就会传递给 p 函数。其他方法
promise.finally
使用 promise.finally 的方法的作用在于: 不管 promise 的最后的状态是什么, 使用 promise.finally 内的回调函数始终会被执行;例如: 请求之前的指示器打开或者关闭:1 | this.indicator.show(); |