如何连续调用函数

我希望能够持续运行这个代码,以便我调用的函数总是检查input是true还是false

index.js

io.on('connection', function(socket) { var entered = require('./main.js').onProximityBoolean; /// i want this to continuously be checking itself if (entered == true) { socket.emit('enterProximity'); } } 

main.js

 var enter = false; function onProximityBoolean(enter) { if (enter === true) { console.log(enter); return true; } else { return false; } } function isWithinBounds() { //inside here is sensor code that says if the object comes close //then enter will be true else enter will be false //this part accurately redefines the onProximityBoolean } module.exports = { onProximityBoolean: onProximityBoolean(enter) }; 

你可能想用setter / getter来实现一个观察者

 "main.js"; var state=false; var handlers=[]; module.exports={ get proximityBoolean(){ return state; }, set proximityBoolean(value){ if(value!==state){ state=value; handlers.forEach(func=>func(value)); }, observe(func){ handlers.push(func); } } 

所以你可以这样做:

 var main = require('./main.js'); io.on('connection', function(socket) { main.observe(function(entered){ if (entered == true) { socket.emit('enterProximity'); } }); } //trigger it somewhen main.proximityBoolean=true; 

或者使用setInterval来定期检查:

 var main=require('./main.js'); io.on('connection', function(socket){ setInterval(function() { var entered = main.onProximityBoolean; if (entered == true) { socket.emit('enterProximity'); } },1000); }); 

我认为你应该使用cron作业。 这里是npm回购和使用的例子

尝试使用setInterval()方法。 你可以使用while(true)循环,但是会使代码变慢,所以我build议你做的是:

 io.on('connection', function(socket){ setInterval(function(socket) { var entered = require('./main.js').onProximityBoolean; if (entered == true) { socket.emit('enterProximity'); } },1000);}); //after 1 second the function will be called [1000ms]