我对承诺很陌生,想知道为什么我的承诺定义在没有我调用.then()
或解析的情况下执行。
var promise = new Promise(function (resolve, reject) {
console.log("Starting loader");
resolve();
});
如果您运行示例并查看控制台,您将看到'Starting loader'消息。
https://jsfiddle.net/npqgpcud/承诺就是这样定义的。它们立即运行它们的executor函数。在规范中:Promise(executor),第9步。
这是一个揭示构造函数模式的实例;
这是因为promise 将立即同步执行。
.then()
增加了当承诺被实现(resolve
参数)或被拒绝(reject
参数)时将执行的函数。
来自@Kirill Slatin的评论