Promise、Promise.all()、Promise.race()的简单使用

简单介绍一下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
});
原创文章 8 获赞 7 访问量 1851

猜你喜欢

转载自blog.csdn.net/trenki/article/details/105602215