Promise resolve方法

2023-05-23 10:04:52 浏览数 (2)

Promise的resolve方法

resolve方法是Promise对象原型上的一个方法,用于将Promise对象的状态转变为已完成(fulfilled)状态。它接受一个参数,该参数表示异步操作的结果。

语法

代码语言:javascript复制
Promise.resolve(value);

其中,value表示异步操作的结果值。

示例代码

下面是一个示例代码,演示了resolve方法的使用:

代码语言:javascript复制
function performAsyncTask() {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve('Async operation succeeded.');
    }, 2000);
  });
}

const promise = performAsyncTask();

promise.then(result => {
  console.log('Result:', result); // 输出异步操作的结果
});

在上述示例中,我们定义了一个performAsyncTask函数,它返回一个Promise对象,并模拟了一个异步操作。在异步操作完成后,我们调用resolve方法将Promise的状态设置为fulfilled,并传递异步操作的结果值。

然后,我们通过.then()方法来处理Promise对象的fulfilled状态,并输出异步操作的结果。

resolve方法的特点

resolve方法具有以下特点:

  1. resolve方法是静态方法,可以直接通过Promise.resolve()调用,不需要先创建Promise实例。
  2. 如果传递给resolve方法的参数是一个Promise对象,则会直接返回该Promise对象,不会创建新的Promise对象。
  3. 如果传递给resolve方法的参数是一个thenable对象(即具有then方法的对象),则会将其视为一个Promise对象,并进行相应的处理。
  4. 如果不传递参数给resolve方法,或者传递的参数是undefined,则会将Promise的状态设置为fulfilled,且结果值为undefined

下面是一些示例代码,展示了resolve方法的不同用法:

代码语言:javascript复制
// 示例1: 直接调用resolve方法,创建一个已完成状态的Promise对象
const promise1 = Promise.resolve('Resolved value');
promise1.then(result => {
  console.log(result); // 输出: Resolved value
});

// 示例2: 传递一个Promise对象给resolve方法
const promise2 = new Promise(resolve => {
  resolve('Inner resolved value');
});
const promise3 = Promise.resolve(promise2);
console.log(promise2 === promise3); // 输出: true

// 示例3: 传递一个thenable对象给resolve方法
const thenable = {
  then(resolve) {
    resolve('Thenable resolved value');
  }
};
const promise4 = Promise.resolve(thenable);
promise4.then(result => {
  console.log(result); // 输出: Thenable resolved value
});

// 示例4: 不传递参数给resolve方法
const promise5 = Promise.resolve();
promise5.then(result => {
  console.log(result); // 输出: undefined
});

在上述示例中,我们展示了不同方式使用resolve方法创建和处理Promise对象。

0 人点赞