Promise.constructor() 及 Promise.resolve() 用法及区别详解

Promise.constructor()

在学习 Promise 时,我们会看到 Promise 的构造函数 Promise(),它接受一个函数作为参数,这个函数叫做 executor,它有两个参数,分别是 resolve 和 reject。executor 函数在 Promise 实例化时会被自动调用。

其中,resolve 和 reject 都是函数,它们分别用于将 Promise 的状态从未完成(pending)转换为已完成(fulfilled)和已拒绝(rejected)。

Promise.resolve()

Promise.resolve() 方法返回一个已完成的 Promise 对象,它接受一个参数,这个参数可以是一个值、一个 Promise 对象或一个 thenable 对象。如果参数是一个 Promise 对象,则 Promise.resolve() 方法会直接返回这个 Promise 对象。如果参数是一个 thenable 对象,则 Promise.resolve() 方法会将这个对象转换为 Promise 对象并返回。

区别

Promise.constructor() 和 Promise.resolve() 的区别在于,Promise.constructor() 是用于创建一个新的 Promise 对象,而 Promise.resolve() 是用于将一个值或对象转换为 Promise 对象。Promise.resolve() 方法返回的 Promise 对象是已完成的,而 Promise.constructor() 方法返回的 Promise 对象是未完成的。

在上面的示例中,promise2 和 promise3 都是返回 promise1 的 Promise 对象,但是它们的状态不同,promise2 的状态是已完成的,而 promise3 的状态是未完成的。

总结

Promise.constructor() 和 Promise.resolve() 都是 Promise 对象的方法,它们的作用不同。Promise.constructor() 用于创建一个新的 Promise 对象,而 Promise.resolve() 用于将一个值或对象转换为 Promise 对象。Promise.resolve() 方法返回的 Promise 对象是已完成的,而 Promise.constructor() 方法返回的 Promise 对象是未完成的。在实际开发中,我们可以根据需求选择使用这两个方法。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6509106b95b1f8cacd3dad36


纠错
反馈