[英]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类对象,为什么我会收到类似的错误
promise2
是Promise
一个实例 。
Promise
是一个用于创建promise的构造函数,它本身不是一个promise。
考虑一下汽车和福特工厂之间的区别。
他们是不同的东西。
Promise.resolve(3);
创造一个已经解决的新承诺。
new Promise()
还创建了一个新的承诺,但你需要打电话then
就promise2
而不是resolve
才能够获得所需的输出。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.