语法
-
new Promise(function(resolve, reject) { ... })
new Promise构造函数会返回一个实例,resolve和reject是作为函数的形式传递进去的,当resolve和reject函数被调用时,分别会将promise的状态改为完成或者失败。
属性
- length:length属性的值始终为1(构造器参数的数目)
- prototype:prototype属性指向promise构造函数的原型
方法
- Promise.all(iterable)
这个方法返回一个新的promise对象,该promise对象在iterable参数对象里所有的promise对象都成功的时候才会触发成功,一旦有任何一个iterable里面的promise对象失败则立即触发该promise对象的失败。这个新的promise对象在触发成功状态以后,会把一个包含iterable里所有promise返回值的数组作为成功回调的返回值,顺序跟iterable的顺序保持一致;如果这个新的promise对象触发了失败状态,它会把iterable里第一个触发失败的promise对象的错误信息作为它的失败错误信息。Promise.all方法常被用于处理多个promise对象的状态集合。
- Promise.race(iterable)
当iterable参数里的任意一个子promise被成功或失败后,父promise马上也会用子promise的成功返回值或失败详情作为参数调用父promise绑定的相应句柄,并返回该promise对象。
- Promise.resolve(iterable)
返回一个状态为失败的Promise对象,并将给定的失败信息传递给对应的处理方法
- Promise.reject(iterable)
返回一个状态由给定value决定的Promise对象。如果该值是thenable(即,带有then方法的对象),返回的Promise对象的最终状态由then方法执行决定;否则的话(该value为空,基本类型或者不带then方法的对象),返回的Promise对象状态为fulfilled,并且将该value传递给对应的then方法。通常而言,如果你不知道一个值是否是Promise对象,使用Promise.resolve(value) 来返回一个Promise对象,这样就能将该value以Promise对象形式使用。
Promise原型
-
console.log(Promise.prototype.constructor) // ƒ Promise() { [native code] }
Promise的原型,返回的是Promise函数
创建Promise
let promisel = new Promise((resolve, reject) => {
let a = 21;
if (a > 10) {
return resolve("success")
} else {
return reject("failure")
}
})
promisel.then(res => {
console.log(res)
}, err => {
console.log(err)
})
then方法在成功的状态下才会触发。