scheduling a call
setTimeoutsetInterval
JavaScript Node.js
setTimeout
let timerId = setTimeout(func|code, [delay], [arg1], [arg2], ...)
func|codedelay- 1000 = 1 0
arg1arg2- IE9
sayHi() 1
function sayHi() {
alert('Hello');
}
setTimeout(sayHi, 1000);
function sayHi(phrase, who) {
alert( phrase + ', ' + who );
}
setTimeout(sayHi, 1000, "Hello", "John"); // Hello, John
JavaScript
setTimeout("alert('Hello')", 1000);
setTimeout(() => alert('Hello'), 1000);
()
//
setTimeout(sayHi(), 1000);
setTimeout sayHi() setTimeout sayHi() undefined
clearTimeout
setTimeout timer identifier timerId
let timerId = setTimeout(...);
clearTimeout(timerId);
let timerId = setTimeout(() => alert("never happens"), 1000);
alert(timerId); //
clearTimeout(timerId);
alert(timerId); // null
alert Node.js
HTML5 timers section
setInterval
setInterval setTimeout
let timerId = setInterval(func|code, [delay], [arg1], [arg2], ...)
setTimeout setInterval
clearInterval(timerId)
2 5
// 2
let timerId = setInterval(() => alert('tick'), 2000);
// 5
setTimeout(() => { clearInterval(timerId); alert('stop'); }, 5000);
Chrome Firefox alert/confirm/prompt
alert alert alert 2
setTimeout
setInterval setTimeout
/** instead of:
let timerId = setInterval(() => alert('tick'), 2000);
*/
let timerId = setTimeout(function tick() {
alert('tick');
timerId = setTimeout(tick, 2000); // (*)
}, 2000);
setTimeout (*)
setTimeout setInterval
server 5 102040
let delay = 5000;
let timerId = setTimeout(function request() {
......
if (request failed due to server overload) {
// 2
delay *= 2;
}
timerId = setTimeout(request, delay);
}, delay);
CPU
setTimeout setInterval
setInterval
let i = 1;
setInterval(function() {
func(i++);
}, 100);
setTimeout
let i = 1;
setTimeout(function run() {
func(i++);
setTimeout(run, 100);
}, 100);
setInterval 100 func(i++)
setInterval func
func
func 100
JavaScript func
delay
setTimeout
setTimeout 100
setInterval/setTimeout GC
//
setTimeout(function() {...}, 100);
setInterval clearInterval
setTimeout
setTimeout(func, 0) setTimeout(func)
func
Hello World
setTimeout(() => alert("World"));
alert("Hello");
calendar0 "Hello" "World"
HTML5 5 4
setTimeout times
let start = Date.now();
let times = [];
setTimeout(function run() {
times.push(Date.now() - start); //
if (start + 100 < Date.now()) alert(times); // 100
else setTimeout(run); //
});
//
// 1,1,1,1,9,15,20,24,30,35,40,45,50,55,59,64,70,75,80,85,90,95,100
9, 15, 20, 24... 4 timer start 1 0
setInterval setTimeoutsetInterval(f) f 4
JavaScript Node.js setImmediate
setTimeout(func, delay, ...args)setInterval(func, delay, ...args)delayfuncdelayfunc-
clearInterval/clearTimeoutsetInterval/setTimeout -
setTimeoutsetInterval -
setTimeout(func, 0)setTimeout(func) -
setTimeoutsetInterval4ms
- CPU
300ms 1000ms
<code><pre>10 plnkrJSBincodepen