Promise的resolve方法
resolve
方法是Promise对象原型上的一个方法,用于将Promise对象的状态转变为已完成(fulfilled
)状态。它接受一个参数,该参数表示异步操作的结果。
语法
代码语言:javascript复制Promise.resolve(value);
其中,value
表示异步操作的结果值。
示例代码
下面是一个示例代码,演示了resolve
方法的使用:
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
方法具有以下特点:
resolve
方法是静态方法,可以直接通过Promise.resolve()
调用,不需要先创建Promise实例。- 如果传递给
resolve
方法的参数是一个Promise对象,则会直接返回该Promise对象,不会创建新的Promise对象。 - 如果传递给
resolve
方法的参数是一个thenable对象(即具有then
方法的对象),则会将其视为一个Promise对象,并进行相应的处理。 - 如果不传递参数给
resolve
方法,或者传递的参数是undefined
,则会将Promise的状态设置为fulfilled
,且结果值为undefined
。
下面是一些示例代码,展示了resolve
方法的不同用法:
// 示例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对象。