为什么我的Promise定义会被执行?

时间:2015-07-17 23:17:04

标签: javascript constructor promise

我对Promises很新,并想知道为什么我的Promise定义在没有调用.then()或解决它的情况下执行。

var promise = new Promise(function (resolve, reject) {
     console.log("Starting loader");
     resolve();
});

如果您运行示例并看到控制台,您将看到'正在启动的加载程序'消息。

https://jsfiddle.net/npqgpcud/

2 个答案:

答案 0 :(得分:14)

这就是承诺的定义方式。他们立即运行执行功能。它在规范中:Promise(executor),第10步。

这是revealing constructor pattern的一个实例;阅读可能有助于你理解。

答案 1 :(得分:4)

这是因为promise 立即执行并同步执行。

.then()添加在履行承诺(resolve参数)或拒绝承诺(reject参数)时将执行的函数。

,来自@Kirill Slatin的评论信息