温馨提示×

Promise的使用

Promise是一种用于处理异步操作的对象,它表示一个异步操作的最终完成(或失败),以及其结果值。

创建Promise

要创建一个Promise对象,可以使用new Promise()构造函数,它接受一个带有两个参数的函数作为参数。这两个参数分别是resolvereject,分别表示成功和失败的回调函数。

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

Promise的状态

一个Promise对象有三种状态:Pending(进行中)、Fulfilled(已成功)和Rejected(已失败)。当Promise创建时,它处于Pending状态,然后可以通过resolve()reject()方法改变状态。

处理Promise

可以使用.then()方法来处理Promise对象的状态。.then()方法接受两个参数,分别是成功时的回调函数和失败时的回调函数。

promise.then((result) => {
  console.log('成功', result);
}).catch((error) => {
  console.log('失败', error);
});

Promise链

可以使用.then()方法多次调用,形成Promise链,实现多个异步操作依次执行。

promise.then((result) => {
  console.log('第一步成功', result);
  return '第二步';
}).then((result) => {
  console.log('第二步成功', result);
}).catch((error) => {
  console.log('失败', error);
});

Promise.all()

Promise.all()接受一个Promise对象数组作为参数,返回一个新的Promise对象,当所有Promise对象都成功时,该Promise对象也成功,否则失败。

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()接受一个Promise对象数组作为参数,返回一个新的Promise对象,只要有一个Promise对象成功或失败,该Promise对象就会立即返回。

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'
});

以上就是关于Promise的基本使用教程,希服对你有所帮助。如果有任何问题,请随时提问。