node.js - Time based javascript functions with setInterval -


i'm using node.js question strictly javascript related. i'm interfacing i2c board fade lights , i'd fade them @ specific rate, 1 second. setinterval, in theory should work like... if wanted fade them 100 steps in 1 second like...

var fader = setinterval(function(){ //will fade light 100 steps in 1 second     dofade(something,something); },10) 

but depending on code inside of interval loop, may take longer 1 second (i tested , application 2.5 seconds). i'm sure fact function dofade taking set amount of time happen causing issue i'm curious if there real way make happen within 1 second.

the closest you'll ever get, afaik, relying entirely on js this:

var fader = (function(now) {     var timeleft, end = + 1000,//aim 1000 ms         stepsremaining = 100,         callback = function()         {//define here, avoid redefining function objects             dosomething(foo, bar);             setter();         },         setter = function()         {//recompute interval, set anew             if (stepsremaining <= 0)             {//avoid infinite timeouts                 return;             }             timeleft = (end - (+(new date)));             timeleft= timeleft > 0 ? timeleft : 0;//ensure positive timeleft, if not, 0 intervals ==> asap             fader = setinterval(                 callback,                 math.floor(                     timeleft/stepsremaining--                 )             );         };     setter();     return fader; }(+(new date)));//get ms 

this code, though untested creates function objects beforehand. then, using setter, everytime interval finishes, long haven't set 100 intervals, new interval computed. after work done, callback function, setter called again. here, number of remaining steps checked, timeleft computed again , based on remaining steps, decremented 1 on each call setter.
avoid setting intervals long, or using float-numbers, i'm calling math.floor, , avoid setting negative timeout values, i'm checking value of timeleft, too, obviously


Comments

Popular posts from this blog

java.util.scanner - How to read and add only numbers to array from a text file -

rewrite - Trouble with Wordpress multiple custom querystrings -

debian - 500 Error upon login into Plesk Admin - auth.php3? -