Promise - 08 如何使用Promise 的部分 API

1: API

  • Promise.all([x,x,x])
  • Promise.race([x,x,x])
  • Promise.resolve()
  • Promise.reject()
const p1 = new Promise((resolve, reject) => {
  return resolve(1)
})

const p2 = Promise.resolve(2)

const p3 = Promise.reject(3)
Promise.all([x,x,x])

这个方法返回一个新的promise对象,该promise对象在iterable参数对象里所有的promise对象都成功的时候才会触发成功一旦有任何一个iterable里面的promise对象失败则立即触发该promise对象的失败。这个新的promise对象在触发成功状态以后,会把一个包含iterable里所有promise返回值的数组作为成功回调的返回值,顺序跟iterable的顺序保持一致;如果这个新的promise对象触发了失败状态,它会把iterable里第一个触发失败的promise对象的错误信息作为它的失败错误信息。Promise.all方法常被用于处理多个promise对象的状态集合。(可以参考jQuery.when方法---译者注)

把上面p1,p2,p3使用

Promise.all([p1,p2,p3]) 
//由于p3返回的是失败 reject 所以会返回第一个失败的promise 对象的错误信息作为all的失败错误信息

/*Promise {: 3}
__proto__: Promise
[[PromiseStatus]]: "rejected"
[[PromiseValue]]: 3*/

Promise.all([p1,p2]) 
// 由于返回值全部正确所以返回的是数组 [1,2]
/*
[[PromiseValue]]: Array(2)
0: 1
1: 2
length: 2
__proto__: Array(0)
*/

Promise.race([x,x,x])

当iterable参数里的任意一个子promise被成功或失败后,父promise马上也会用子promise的成功返回值或失败详情作为参数调用父promise绑定的相应句柄,并返回该promise对象。

Promise.race(p1,p2) // [1]
// p1, p2 谁先返回则输出的是谁的值,不管是成功还是失败

你可能感兴趣的:(Promise - 08 如何使用Promise 的部分 API)