数据如何从我的承诺中运行而不调用它
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
,那么它永远不会解析。您传递给它的函数仍然被调用。
所以我目前正在学习 JavaScript 中的承诺,我尝试做出我的第一个承诺并意识到它 运行 setTimeout()
即使我没有调用promise 首先,只需定义它,它本身 运行。这是 postLogin
.
const postLogin = new Promise((resolve, reject) => {
setTimeout(() => {
console.log("Token: 1234")
}, 2000);
});
^ 这会在不调用 postLogin.then()
在我调用 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
,那么它永远不会解析。您传递给它的函数仍然被调用。