Promise
The Promise object represents the eventual completion (or failure) of an asynchronous operation, and its resulting value.
Promise对象示意异步操纵的终究完成(或失利)及其效果值。
1.Syntax(语法)
new Promise(executor);
executor:
通报参数resolve和reject的函数。executor函数由Promise完成马上实行,通报resolve和reject函数(在Promise组织函数返回建立的对象之前挪用executor)。当挪用resolve和reject函数时,离别代表已完成和已失利。当实行顺序完成,胜利则挪用resolve,涌现毛病则挪用reject。
2.Description(形貌)
Promise许可异步要领返回与同步要领相似的值:异步要领不是马上返回终究值,而是返回一个Promise,在未来的某个时刻供应该值。
Promise状况:
- pending : 初始状况,未完成或谢绝。
- fulfilled : 意味着操纵胜利完成。
- rejected : 示意操纵失利。
返回的Promise的prototype下有.then()和.catch()要领
3.Methods(要领)
Promise.all(iterable)
返回一个Promise,这个Promise在一切可迭代参数中的一切Promise都fulfilled胜利返回,或许在可迭代参数中的一个Promise为rejects失利时返回。
var promise1 = new Promise(function(resolve, reject) {
setTimeout(resolve('promise1'), 100);
});
var promise2 = new Promise(function(resolve, reject) {
setTimeout(resolve('promise2'), 50);
});
Promise.all([promise1, promise2]).then(function(values){
console.log(values);
});
// log: Array [promise1, promise2]
Promise.race(iterable))
返回一个Promise,这个Promise在一切可迭代参数中只需有一个Promise实行终了,则会马上实行.then(),之后会继承实行剩下的Promise直到完毕。
var promise1 = new Promise(function(resolve, reject) {
setTimeout(function(){
console.log('resolve--------promise1')
resolve('promise1')
}, 5000);
});
var promise2 = new Promise(function(resolve, reject) {
setTimeout(function(){
console.log('resolve--------promise2')
resolve('promise2')
}, 3000);
});
var promise3 = new Promise(function(resolve, reject) {
setTimeout(function(){
console.log('reject--------promise3 => 第一个异步使命实行终了')
reject('promise3')
}, 1000);
});
Promise.race([promise1, promise2, promise3]).then(function(success){
console.log('success--------'+success);
}).catch(function(error){
console.log('error--------'+error+'=> 马上实行.then(),之后会继承实行未完成的异步使命promise2、promise1');
});
//
/*
log:reject--------promise3 => 第一个异步使命实行终了
error--------promise3=马上实行.then(),之后会继承实行未完成的异步使命promise2、promise1
index.html:20 resolve--------promise2
index.html:14 resolve--------promise1
*/
Promise.reject()
返回因给定原因被谢绝的Promise对象。
function fnc(obj){
return new Promise(function(reslove,reject){
if(obj) reslove('success')
else reject('error')
})
}
fnc(false).then(function(success){
console.log('success------'+success)
},function(error){
console.log('error------'+error)
})
//log : error------error
**
Promise.resolve()
返回运用给定值剖析的Promise对象。假如值是thenable(即具有then要领),返回的promise将“遵照”该thenable,采纳其终究状况,不然,返回的promise将用值来完成。一般,假如不知道一个值是不是是一个promise,那末promise.resolve(value)它,并将返回值作为一个promise来处置惩罚。
function fnc(obj){
return new Promise(function(reslove,reject){
//依据obj的属性挑选返回对应的状况
if(obj) reslove('success')
else reject('error')
})
}
fnc(false).then(function(success){
console.log('success------'+success)
},function(error){
console.log('error------'+error)
})
//log : error------error
简简单单的叙说下Promise经常使用的几个属性,有不对的地方请指教~昨天看了一篇文章,照样挺有启示的。。。。。
前端专业方向的终点