Promise 对象用于表示一个异步操做的最终完成 (或失败), 及其结果值.
Promise 对象是一个代理对象(代理一个值),被代理的值在Promise对象建立时多是未知的。
它容许你为异步操做的成功和失败分别绑定相应的处理方法(handlers)。
这让异步方法能够像同步方法那样返回值,但并非当即返回最终 执行结果,而是一个能表明将来出现的结果的promise对象
方法
Promise.all(iterable) [所有成功时返回]
这个方法返回一个新的promise对象,该promise对象在iterable参数对象里全部的promise对象都成功的时候才会触发成功,一旦有任何一个iterable里面的promise对象失败则当即触发该promise对象的失败。
这个新的promise对象在触发成功状态之后,会把一个包含iterable里全部promise返回值的数组做为成功回调的返回值,顺序跟iterable的顺序保持一致;
若是这个新的promise对象触发了失败状态,它会把iterable里第一个触发失败的promise对象的错误信息做为它的失败错误信息。Promise.all方法常被用于处理多个promise对象的状态集合。(能够参考jQuery.when方法---译者注)
Promise.race(iterable) [一个成功时返回]
当iterable参数里的任意一个子promise被成功或失败后,父promise立刻也会用子promise的成功返回值或失败详情做为参数调用父promise绑定的相应句柄,并返回该promise对象。
Promise.reject(reason)
返回一个状态为失败的Promise对象,并将给定的失败信息传递给对应的处理方法
Promise.resolve(value)
返回一个状态由给定value决定的Promise对象。若是该值是thenable(即,带有then方法的对象),返回的Promise对象的最终状态由then方法执行决定;
不然的话(该value为空,基本类型或者不带then方法的对象),返回的Promise对象状态为fulfilled,而且将该value传递给对应的then方法。
一般而言,若是你不知道一个值是不是Promise对象,使用Promise.resolve(value) 来返回一个Promise对象,这样就能将该value以Promise对象形式使用。
上面所说的失败是指不符合业务逻辑的失败,即未获得预期参数的失败,因此resolve,reject的值都将返回到then中的第一二哥参数。catch的话解决的是promise中的代码失败,即执行过程当中发生错误,代码书写错误等