我想检查“ for loop”中所选日期是否过去。但是,如果我使用“ for循环”,它将停止其他代码的运行。如何不断检查日期是否是过去的日期,而不停止其他代码的运行?
for (var now = new Date();;) {
if (selectedDate < now) {
// some code
}
}
console.log('1') // code that's not running.
答案 0 :(得分:2)
JavaScript是完全同步和单线程的。因此,您的代码被“锁定”或卡在您引用的for
循环中。
您需要使用setInterval
。例如:
// For demonstration purposes.
var selectedDate = new Date();
// The code inside of this function will run every 1 second (or 1,000 milliseconds)
setInterval(function () {
var now = new Date();
if (selectedDate < now) {
console.log("Selected date is in the past!");
}
}, 1000);
console.log('1') // This code runs now because JavaScript is not caught executing the for loop.
答案 1 :(得分:0)
许多解决此问题的解决方案。如果您使用RXJS,则可以使用Observable。否则,您可以使用带有箭头功能的简单间隔或简单的功能,并以毫秒为单位定义重复时间间隔:
setInterval(repeatFunc,intervalInMillisecond);