溫馨提示×

Promise的使用

Promise是一種用于處理異步操作的對象,它表示一個(gè)異步操作的最終完成(或失?。约捌浣Y(jié)果值。

創(chuàng)建Promise

要?jiǎng)?chuàng)建一個(gè)Promise對象,可以使用new Promise()構(gòu)造函數(shù),它接受一個(gè)帶有兩個(gè)參數(shù)的函數(shù)作為參數(shù)。這兩個(gè)參數(shù)分別是resolvereject,分別表示成功和失敗的回調(diào)函數(shù)。

const promise = new Promise((resolve, reject) => {
  // 異步操作
  if (/* 操作成功 */) {
    resolve('成功');
  } else {
    reject('失敗');
  }
});

Promise的狀態(tài)

一個(gè)Promise對象有三種狀態(tài):Pending(進(jìn)行中)、Fulfilled(已成功)和Rejected(已失敗)。當(dāng)Promise創(chuàng)建時(shí),它處于Pending狀態(tài),然后可以通過resolve()reject()方法改變狀態(tài)。

處理Promise

可以使用.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);
});

Promise鏈

可以使用.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()

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()

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í)提問。