Promise是一種用于處理異步操作的對象,它表示一個(gè)異步操作的最終完成(或失?。约捌浣Y(jié)果值。
要?jiǎng)?chuàng)建一個(gè)Promise對象,可以使用new Promise()
構(gòu)造函數(shù),它接受一個(gè)帶有兩個(gè)參數(shù)的函數(shù)作為參數(shù)。這兩個(gè)參數(shù)分別是resolve
和reject
,分別表示成功和失敗的回調(diào)函數(shù)。
const promise = new Promise((resolve, reject) => {
// 異步操作
if (/* 操作成功 */) {
resolve('成功');
} else {
reject('失敗');
}
});
一個(gè)Promise對象有三種狀態(tài):Pending(進(jìn)行中)、Fulfilled(已成功)和Rejected(已失敗)。當(dāng)Promise創(chuàng)建時(shí),它處于Pending狀態(tài),然后可以通過resolve()
或reject()
方法改變狀態(tài)。
可以使用.then()
方法來處理Promise對象的狀態(tài)。.then()
方法接受兩個(gè)參數(shù),分別是成功時(shí)的回調(diào)函數(shù)和失敗時(shí)的回調(diào)函數(shù)。
promise.then((result) => {
console.log('成功', result);
}).catch((error) => {
console.log('失敗', error);
});
可以使用.then()
方法多次調(diào)用,形成Promise鏈,實(shí)現(xiàn)多個(gè)異步操作依次執(zhí)行。
promise.then((result) => {
console.log('第一步成功', result);
return '第二步';
}).then((result) => {
console.log('第二步成功', result);
}).catch((error) => {
console.log('失敗', error);
});
Promise.all()
接受一個(gè)Promise對象數(shù)組作為參數(shù),返回一個(gè)新的Promise對象,當(dāng)所有Promise對象都成功時(shí),該P(yáng)romise對象也成功,否則失敗。
const promise1 = new Promise((resolve) => setTimeout(resolve, 100, 'one'));
const promise2 = new Promise((resolve) => setTimeout(resolve, 200, 'two'));
Promise.all([promise1, promise2]).then((values) => {
console.log(values); // ['one', 'two']
});
Promise.race()
接受一個(gè)Promise對象數(shù)組作為參數(shù),返回一個(gè)新的Promise對象,只要有一個(gè)Promise對象成功或失敗,該P(yáng)romise對象就會(huì)立即返回。
const promise1 = new Promise((resolve) => setTimeout(resolve, 100, 'one'));
const promise2 = new Promise((resolve) => setTimeout(resolve, 200, 'two'));
Promise.race([promise1, promise2]).then((value) => {
console.log(value); // 'one'
});
以上就是關(guān)于Promise的基本使用教程,希服對你有所幫助。如果有任何問題,請隨時(shí)提問。