var energy = 70;
setInterval (function () {
energy = energy - 1;
$("#energiegetal").val(energy);
}, 5000);
if (energy < 67){
console.log("works")
}
else {
console.log("not working")
}
答案 0 :(得分:1)
您的function
需要包含if
声明,如下所示:
var energy = 70;
setInterval (function () {
energy = energy - 1;
$("#energiegetal").val(energy);
if (energy < 67){
console.log("works")
}
else {
console.log("not working")
}
}, 5000);
答案 1 :(得分:0)
@sherb的答案可能就是你所需要的。但是,如果您的代码更复杂,您可能希望将其分解为彼此不了解的不同部分。一种方法是通过某种信令系统连接各部分,例如匿名的PubSub / EventEmitter机制。那里有很多。使用全局events
模块,这可能会将代码转换为以下内容:
(function() {
var energy = 70; // local to this IIFE
setInterval(function() {
energy = energy -1;
events.emit('energyChanged', energy);
}, 5000);
}());
events.on('energyChanged', function(energy) {
if (energy < 67){
console.log("works")
} else {
console.log("not working")
}
});
正如我所说,这对你的案子来说可能有点过头了,但是当你的要求需要它时,这是一件好事。
答案 2 :(得分:0)
这是一种初学者友好的方式:
var energy = 70;
var period = 5000; //ms
var test67 = function() {
energy = energy - 1;
$("#energiegetal").val(energy);
if (energy < 67) {
console.log("67 works");
setTimeout(test50, period);
} else {
setTimeout(test67, period);
}
};
var test50 = function() {
energy = energy - 1;
$("#energiegetal").val(energy);
if (energy < 50) {
console.log("50 works");
setTimeout(keepDropping, period);
} else {
setTimeout(test50, period);
}
};
var keepDropping = function() {
energy = energy - 1;
$("#energiegetal").val(energy);
setTimeout(keepDropping, period);
};
setTimeout(test67, period);
您可以在 JSBin 上看到它。有很多不喜欢这个,主要是与重复有关,但它应该是相当容易理解的。
我无法分辨你是否希望能量在你的第二个门槛之后继续下降。如果没有,您可以删除该功能以及引用它的setTimeout
调用。
请注意setTimeout
和setInterval
之间的区别。使用setTimeout
,我们手动触发每个下一个调用。使用setInterval
时,它们会不断发生,但要知道何时取消或更改使用的函数会更加困难。
另一种方法是为每个阈值使用标记,报告它们是否已运行,并每次检查标记以查看该阈值是否已被触发。
还有许多其他选择,几乎所有替代品都比这更短。但这与我想象的一样明确。