数据如何从我的承诺中运行而不调用它

How come the data runs from my promise without calling it

所以我目前正在学习 JavaScript 中的承诺,我尝试做出我的第一个承诺并意识到它 运行 setTimeout() 即使我没有调用promise 首先,只需定义它,它本身 运行。这是 postLogin.

const postLogin = new Promise((resolve, reject) => {
    setTimeout(() => {
        console.log("Token: 1234")
    }, 2000);
});

^ 这会在不调用 postLogin.then()

的情况下注销“令牌:1234”

在我调用 postLogin1.then(token => {console.log(token)});

之前,这不会 运行
const postLogin1 = new Promise((resolve, reject) => {
    setTimeout(() => {
        resolve("Token1: 1234");
    }, 2000);
});

postLogin1.then(token => {console.log(token)});

为什么如果我不添加 "resolve" 它 运行 就是代码而不调用它?

Promise 构造函数立即调用您传递给它们的函数。你的两个例子都是这种情况。

如果您在该函数中有 console.log,那么它将调用 console.log。如果你不这样做,那么它就不会。这是示例之间的主要区别。

then 方法只是添加一个事件处理程序,该处理程序将在解决 promise 时调用(或者如果已经解决则立即调用)。

如果在 then 处理程序中有 console.log,那么它将被调用然后函数解析。

如果您从来不调用 resolve,那么它永远不会解析。您传递给它的函数仍然被调用。