繁体   English   中英

JavaScript承诺宣言的差异

[英]JavaScript Promise Declaration Difference

我是一名JavaScript学习者,并且有关于Promises的问题。

当我使用Promise对象的函数resolve时,我没有按预期的错误。 喜欢 :

var promise1 = Promise.resolve(3);

但是,当我使用以下声明时:

var promise2 = new Promise(function(resolve, reject) {
    setTimeout(resolve, 1000, 'foo');
});
promise2.resolve(4)

这不是一回事吗? 或者如果promise2也是一个Promise类对象,为什么会出现如下错误:

TypeError: promise2.resolve is not a function
    at Object.<anonymous>

不,他们不是一回事。

Promise (带有大写P )构造函数的resolve方法创建一个新的 promise并立即解析它。

现有的承诺没有resolve方法。 它们只能通过调用传递给传递给Promise构造函数的函数的第一个参数的函数来解析。


或者如果promise2也是一个Promise类对象,为什么我会收到类似的错误

promise2Promise一个实例

Promise是一个用于创建promise的构造函数,它本身不是一个promise。

考虑一下汽车和福特工厂之间的区别。

他们是不同的东西。

Promise.resolve(3); 创造一个已经解决的新承诺。

new Promise()还创建了一个新的承诺,但你需要打电话thenpromise2而不是resolve才能够获得所需的输出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM