我正在努力学习回调,并想知道我在这里做错了什么,因为我希望在4秒后得到一条消息:
我试图开火,但其中一个功能尚未完成
在8秒后发出另一条消息:
我等待两个功能完成,现在我已经解雇了
相反,我得到:
我等待两个功能完成,现在我已经解雇了
两次,4秒后和8秒后再次。
var cbvarone = false;
var cbvartwo = false;
var whenOthersFinished = function() {
if (cbvartwo && cbvartwo) {
console.log("I waited for the two functions to finish and now I've fired");
}
else {
console.log("I've tried to fire but one of the funcs isn't finished yet");
}
};
var firstFunc = function(cb) {
setTimeout(function(){cbvarone = true; cb();}, 8000);
};
var secondFunc = function(cb) {
setTimeout(function(){cbvartwo = true; cb();}, 4000);
};
firstFunc(whenOthersFinished);
secondFunc(whenOthersFinished);
答案 0 :(得分:2)
你有:
if (cbvartwo && cbvartwo) {
我认为你的意思是:
if (cbvarone && cbvartwo) {
答案 1 :(得分:2)
在你的功能中:
var whenOthersFinished = function() {
if (cbvartwo && cbvartwo) {
console.log("I waited for the two functions to finish and now I've fired");
}
else {
console.log("I've tried to fire but one of the funcs isn't finished yet");
}
};
你的if语句是:
if (cbvartwo && cbvartwo)
将其更改为:
if (cbvarone && cbvartwo)
一切都应该没问题。我验证了您的代码按预期进行了更改
答案 2 :(得分:1)
if (cbvartwo && cbvartwo) {
应该是
if (cbvarone && cbvartwo) {