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
});
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章