Javascript 返回真/假时Node.js停止函数
我对Node.js有点陌生,不知道如何实现我的目标 我有这样一个函数:Javascript 返回真/假时Node.js停止函数,javascript,node.js,Javascript,Node.js,我对Node.js有点陌生,不知道如何实现我的目标 我有这样一个函数: function Timer() { setTimeout(function() { finish(); return true; }, 60000); setInterval(function() { if (fail()) { return false;
function Timer() {
setTimeout(function() {
finish();
return true;
}, 60000);
setInterval(function() {
if (fail()) {
return false;
}
}, 5000);
}
这个函数get被调用一次,当其中一个函数返回某个内容时应该停止。函数fail()
基本上就是掷骰子,有5%的几率返回false
函数finish()
在超时结束时返回true
当函数返回某个地方时,如何完全退出end my function?使用一个变量来存储间隔和超时,以便在
end
函数满足所需条件(或超时完成)时,可以使用clearInterval
clearTimeout,您应该将回调传递给Timer
函数,以便在间隔或超时完成后返回值:
function Timer(myCallback) {
var myInterval, myTimeout;
myTimeout = setTimeout(function() {
finish();
clearInterval(myInterval); //Clear the interval so that the callback won't be called again.
myCallback(true); //Call your callback function passing true.
}, 60000);
myInterval = setInterval(function() {
if (fail()) {
clearInterval(myInterval); //Clear the interval so that the callback won't be called again.
clearTimeout(myTimeout); //Clear the timeout so that the callback won't be called again.
myCallback(false); //Call your callback function passing false.
}
}, 5000);
}
现在,您的回调将收到true/false,具体取决于首先调用哪个回调
Timer(function(condition) {
if (condition) doSomethingWhenConditionIsTrue();
else doSomethingWhenConditionIsFalse();
});
您的函数是异步的,这意味着在
setTimeout
和setInterval
之后退出,不返回任何值。在JavaScript中,函数被设计为异步的,它们不能停止主线程。JavaScript使用执行模型,并且setTimeout
和setInterval
是异步的。这意味着您必须在稍后调用的函数中提供延续逻辑。您有三种选择:
请澄清您的预期逻辑,我将补充此答案。您想写什么逻辑?掷骰子?