1.promise.all
来MDN的介绍:
Promise.all() 方法接收一个 promise 的 iterable 类型(注:Array,Map,Set 都属于 ES6 的 iterable 类型)的输入,并且只返回一个Promise实例, 那个输入的所有 promise 的 resolve 回调的结果是一个数组。这个Promise的 resolve 回调执行是在所有输入的 promise 的 resolve 回调都结束,或者输入的 iterable 里没有 promise 了的时候。它的 reject 回调执行是,只要任何一个输入的 promise 的 reject 回调执行或者输入不合法的 promise 就会立即抛出错误,并且 reject 的是第一个抛出的错误信息。
- Promise.all() 方法接收一个promise的iterable类型(注:Array,Map,Set都属于ES6的iterable类型)的输入。 ➡️ 说明所传参数都具有Iterable,也就是可遍历。
 - 并且只返回一个Promise实例。➡️ 说明最终返回是一个Promise对象。
 - 那个输入的所有promise的resolve回调的结果是一个数组。➡️ 说明最终返回的结果是个数组,且数组内数据要与传参数据对应。
 - 这个Promise的resolve回调执行是在所有输入的promise的resolve回调都结束,或者输入的iterable里没有promise了的时候。➡️ 说明最终返回时,要包含所有的结果的返回。
 - 它的reject回调执行是,只要任何一个输入的promise的reject回调执行或者输入不合法的promise就会立即抛出错误,并且reject的是第一个抛出的错误信息。➡️ 说明只要一个报错,立马调用reject返回错误信息。
 
1  | function promiseAll(iterator) {  | 
2.promise.race
1  | function promiseRace(promises) {  | 
3.Promise.prototype.finally
finally()方法用于指定不管 Promise 对象最后状态如何,都会执行的操作(无论promise被reslove或者reject,都会执行到finally里面去)
finally方法的回调函数不接受任何参数,这意味着没有办法知道,前面的 Promise状态到底是fulfilled还是rejected。这表明,finally方法里面的操作,应该是与状态无关的,不依赖于 Promise 的执行结果。
1  | Promise.prototype.finally = (callback) => {  |