大家好,我是 javascript 的新手,最近一直在学习 promises。在继续我的逻辑之前,我试图等待网络调用的结果。为此,我认为我需要一个等待网络调用结果的 promise 。我一直在练习 promises 并注意到一些我不理解的行为。
var mybool = false;
// Promise
var mypromise = new Promise(
function (resolve, reject) {
if (mybool) {
var pvalue = 'PASS';
resolve(pvalue);
} else {
var fvalue = new Error('FAIL');
reject(fvalue);
}
}
);
// call promise
var callpromise = function () {
mypromise
.then(function (fulfilled) {
// yay, you got a new phone
console.log(fulfilled);
})
.catch(function (error) {
// ops, mom don't buy it
console.log(error.message);
});
}
callpromise();
console.log('This will appear first since prev function call is still thinking');
mybool = true;
console.log(mybool);
callpromise();
所以你可以看到 var mybool
确定 promise 函数的输出。当我运行这个程序时,这是输出:
"This will appear first since prev function call is still thinking"
true
"FAIL"
"FAIL"
谁能解释为什么即使翻转了 mybool
var 第二个callpromise()
仍在输出一个我只希望来自 mybool = false
的值?
最佳答案
Promise 不会被“调用”,而是被创建。在实际调用 callpromise
之前,您创建了一次 mypromise
。届时,mybool
为假。如果您想在代码中的特定点创建 Promise,或者如果您想要多个 Promise,请在函数内部创建 Promise。
关于javascript - 为什么我的第二个 javascript promise 调用返回与第一个相同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56007691/