简单介绍一下Promise
,就是一个可以进行异步操作的代理对象,在实际工作中有很大的具体实践。下边介绍Promise
的几种简单用法
1.新建一个Promise对象
//新建一个promise对象
let testPro = new Promise((resolve, reject) => {
var num = Math.random() * 10;
if (num > 5) {
// resolve返回的值,由then方法执行决定
resolve('resolve')
} else {
// reject返回一个状态为失败的Promise对象,给定的信息将会在catch执行
reject('reject')
}
})
testPro.then(res => {
console.log(res) // n>5时打印 resolve
})
.catch(err => {
console.log(err) // n <=5 时打印reject
})
2.新建一个拥有Promise功能的函数
// 返回一个Promise对象即可
let test2 = (n) => {
return new Promise((resolve, reject) => {
if (n > 5) {
resolve('resolve')
} else {
reject('reject')
}
})
}
test2(4).then(res =>{
console.log(res) // 无返回
})
.catch(err =>{
console.log(err) // 打印出 reject
})
3.使用Promise.all()方法的使用
Promise.all()
会返回一个新的Promise
对象,该promise对象在参数对象里所有的promise对象
都成功的时候才会触发成功(resolve),一旦有任何的promise对象
失败则立即触发该promise对象的失败(reject)。
let p1 = new Promise((resolve, reject) =>{
resolve('P1')
});
let p2 = new Promise((resolve, reject) =>{
setTimeout(resolve('P2'), 1000);
});
// 同时执行p1和p2,并在它们都完成后执行then:
Promise.all([p1, p2]).then((res) =>{
console.log(res); // 获得一个Array: ['P1', 'P2']
})
.catch(err =>{
console.log(err)
})
4.Promise.race()方法的使用
Promise.race()
会返回一个新的Promise
对象,该promise对象在参数对象里只要有一个promise对象
成功或者失败,就会触发这个对象的resolve或者reject函数
let p1 = new Promise((resolve, reject) => {
setTimeout(resolve, 500, 'one');
});
let p2 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, 'two');
});
Promise.race([p1, p2]).then((res) => {
console.log(res); // two
});