【发布时间】:2018-02-22 11:51:14
【问题描述】:
我不知道为什么promise1 一直被调用,即使我从未尝试过解决它。
function successCallback() {
console.log("doSomething func succeeded with sucess");
}
function failureCallback() {
console.log("doSomething func failed with error");
}
let promis1 = new Promise((res, rej) => {
setTimeout(() => {
console.log(`Finally got called`);
return res(successCallback());
}, 5000);
});
function promise2(value) {
return new Promise((res, rej) => {
console.log(`This is getting called for some reason ${value}`)
return res(failureCallback());
});
}
Promise.resolve("6").then(promise2(6));
这是我得到的输出:
由于某种原因被调用 6
doSomething 函数因错误而失败
终于叫到了
doSomething 函数成功并成功
[Done] 在 5.525 秒内以 code=0 退出
【问题讨论】:
-
let promis1 = new Promise((res, rej) => {...看到那个功能了吗? (以(res, rej) =>开头,它作为 Promise 构造函数的一部分被调用 -
这意味着什么?您正在执行回调而不是将它们用作参数,因此它们将始终执行(
failureCallback()vsfailureCallback)。Promise.resolve在那里做什么。 -
@Jorg 我只是在修补以完全理解承诺。我在学习 Promise 时遇到了困难,所以一点一点地消化它并引入奇怪而复杂的方法是一种帮助我理解 Promise 工作原理的方法
-
在这种情况下,首先执行
rej(failureCallback)和res(successCallback)。