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

Adr*_*n E 17 javascript constructor promise

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

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

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

https://jsfiddle.net/npqgpcud/

Dom*_*nic 14

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

这是揭示构造函数模式的一个实例; 阅读可能有助于你理解.

  • @AdriánE:Promises不接受争论.如果需要参数,则使用返回promise的*function*. (2认同)
  • Promise(执行者)链接被破坏. (2认同)

gus*_*nke 6

发生这种情况是因为承诺立即同步执行。

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

来自@Kirill Slatin 评论的信息