推荐答案
// www.javascriptcn.com code example
Promise.myResolve = function(value) {
// 如果 value 是一个 Promise 对象,则直接返回它
if (value instanceof Promise) {
return value;
}
// 否则返回一个新的 Promise 对象,并将 value 作为 resolve 的参数
return new Promise((resolve) => {
resolve(value);
});
};本题详细解读
1. 理解 Promise.resolve 的作用
Promise.resolve 是 JavaScript 中 Promise 对象的一个静态方法,用于将一个值转换为一个 Promise 对象。如果传入的值本身就是一个 Promise 对象,则直接返回该对象;如果传入的值是一个普通值,则返回一个以该值为结果的已解决的 Promise 对象。
2. 实现思路
- 判断传入的值是否为 Promise 对象:如果传入的值已经是 Promise 对象,则直接返回该对象。
- 返回一个新的 Promise 对象:如果传入的值不是 Promise 对象,则创建一个新的 Promise 对象,并将传入的值作为
resolve的参数。
3. 代码实现
// www.javascriptcn.com code example
Promise.myResolve = function(value) {
// 如果 value 是一个 Promise 对象,则直接返回它
if (value instanceof Promise) {
return value;
}
// 否则返回一个新的 Promise 对象,并将 value 作为 resolve 的参数
return new Promise((resolve) => {
resolve(value);
});
};4. 使用示例
// www.javascriptcn.com code example
// 示例 1: 传入普通值
Promise.myResolve(42).then((value) => {
console.log(value); // 输出: 42
});
// 示例 2: 传入 Promise 对象
const promise = new Promise((resolve) => resolve(100));
Promise.myResolve(promise).then((value) => {
console.log(value); // 输出: 100
});5. 注意事项
Promise.resolve方法不会改变传入的 Promise 对象的状态,如果传入的是一个已经解决的 Promise 对象,返回的 Promise 对象也会立即解决。- 如果传入的是一个普通值,返回的 Promise 对象会立即解决,并将该值作为解决结果。