1、创建Promise
var myPromise = new Promise(function(resolve, reject){})
resolve
:执行成功执行的方法reject
:执行失败调用的方法
2、使用Promise
function testSuccess(data){
console.log(data);
}
function testError(data){
console.log(data)
}
function test(resolve, reject){
if(true){
resove(true)
} else {
reject("错误")
}
}
var testPromise = new Promise(test);
testPromise.then(testSuccess).cath(testError);
new Promise()
: 新建Promise
test
: Promise
处理过程,处理完成后,调用resolve
或者reject
方法testPromise.then(testSuccess)
: then
中的testSuccess
即为Promise
中resolve
方法testPromise.catch(testError)
: catch
中的testError
即为Promise
中reject
方法
3、多个Promise连环调用
function anotherPromise(val) {
return new Promise(function(resolve,reject){
resolve(++val);
})
}
var testPromise = new Promise(test);
testPrimise.then(anotherPromise).then(anotherPromise).then(testSuccess).catch(tesError);
通过返回Promise
可以实现Promise
的连环调用。如:在一个ajax
结束后再进行另外一个ajax
。
4、多个Promise同时调用,返回所有的数据
var p1 = new Promise(fucntion(resolve, reject){
setTimeout(resolve, 500, 'P1');
})
var p2 = new Promise(fucntion(resolve, reject){
setTimeout(resolve, 600, 'P2');
})
// 同时执行p1和p2,并在它们都完成后执行then:
Promise.all([p1,p2]).then(function(results){
console.log(results); // 获得一个Array:['p1', 'p2']
})
可以同时执行多个Promise
,在全部完成后调用resolve
5.多个Promise
同时调用,返回最快resolve
的数据
var p1 = new Promise(fucntion(resolve, reject){
setTimeout(resolve, 500, 'P1');
})
var p2 = new Promise(fucntion(resolve, reject){
setTimeout(resolve, 600, 'P2');
})
// 同时执行p1和p2,并在它们都完成后执行then:
Promise.race([p1,p2]).then(function(result){
console.log(result); // 'P1'
})