ããã«ã¡ã¯ååã ããããããããã®ãããã¯ã«é¢ããHabreã®
èšäºãJohn Rezigã«ãã£ãŠå·çãããŸããã 10幎ãçµéããŸãããããã®ãããã¯ã«ã¯ãŸã 説æãå¿
èŠã§ãã ãããã£ãŠãSamer Bunaã®èšäºãèªãããšã«èå³ããã人ã«ã¯ãJavaScriptã®ã¿ã€ããŒïŒNode.jsã®ã³ã³ããã¹ãå
ïŒã®çè«çãªæŠèŠã ãã§ãªãããããã«é¢ããã¿ã¹ã¯ãæäŸããŸãã

æ°é±éåãç§ã¯åäžã®ã€ã³ã¿ãã¥ãŒããæ¬¡ã®è³ªåããã€ãŒãããŸããã
ãsetTimeoutããã³setInterval颿°ã®ãœãŒã¹ã³ãŒãã¯ã©ãã«ãããŸããïŒ åœŒãã©ãã§æ¢ããŸããïŒ Googleã§æ€çŽ¢ããããšã¯ã§ããŸãã:) "
***èªåã§çããŠããèªãã§ãã ãã***
ãã®ãã€ãŒããžã®åçã®çŽååã¯ééã£ãŠããŸããã ããããã±ãŒã¹ã¯V8ïŒãŸãã¯ä»ã®VMïŒãšã¯é¢ä¿ãããŸãã!!! JavaScript JavaScriptã¿ã€ããŒãšåŒã°ãã
setTimeout
ã
setInterval
ãªã©ã®
setTimeout
ã¯ãECMAScript仿§ãŸãã¯JavaScriptãšã³ãžã³å®è£
ã®äžéšã§ã¯ãããŸããã ã¿ã€ããŒé¢æ°ã¯ãã©ãŠã¶ãŒã¬ãã«ã§å®è£
ãããããããã©ãŠã¶ãŒã«ãã£ãŠå®è£
ãç°ãªããŸãã ã¿ã€ããŒãNode.jsã©ã³ã¿ã€ã èªäœã«ãã€ãã£ãã«å®è£
ãããŸãã
ãã©ãŠã¶ã§ã¯ãã¡ã€ã³ã¿ã€ããŒé¢æ°ã¯
Window
ã€ã³ã¿ãŒãã§ã€ã¹ã«é¢é£ããŠããŸããããã¯ãä»ã®ããã€ãã®é¢æ°ããªããžã§ã¯ãã«ãé¢é£ä»ããããŠããŸãã ãã®ã€ã³ã¿ãŒãã§ã€ã¹ã¯ãJavaScriptã®ã¡ã€ã³ã¹ã³ãŒãå
ã®ãã¹ãŠã®èŠçŽ ãžã®ã°ããŒãã«ã¢ã¯ã»ã¹ãæäŸããŸãã ãããããã©ãŠã¶ã³ã³ãœãŒã«ã§
setTimeout
颿°ãçŽæ¥å®è¡ã§ããçç±ã§ãã
Nodeã§ã¯ãã¿ã€ããŒã¯
global
ãªããžã§ã¯ãã®äžéšã§ããã
Window
ãã©ãŠã¶ã€ã³ã¿ãŒãã§ãŒã¹ã®ããã«æ§æãããŠããŸãã Nodeã®ã¿ã€ããŒã®ãœãŒã¹ã³ãŒããæ¬¡ã«ç€ºã
ãŸã ã
ããã¯ã€ã³ã¿ãã¥ãŒããã®åãªãæªã質åã§ãããšèª°ãã«æããããããããŸãã-ãã®ãããªããšãç¥ãããšã¯ã©ã®ãããªçšéã§ããïŒïŒ JavaScriptéçºè
ãšããŠãç§ã¯ãã®ããã«èããŸããV8ïŒããã³ä»ã®ä»®æ³ãã·ã³ïŒããã©ãŠã¶ãŒãããŒããšå¯Ÿè©±ããæ¹æ³ãååã«çè§£ããŠããªãããšãå察ã瀺ãå¯èœæ§ãããããããããç¥ã£ãŠããå¿
èŠããããšæ³å®ãããŠããŸãã
ããã€ãã®äŸãèŠãŠãããã€ãã®ã¿ã€ããŒã¿ã¹ã¯ã解決ããŸãããã
nodeã³ãã³ãã䜿çšããŠããã®èšäºã®äŸãå®è¡ã§ããŸãã ããã§èª¬æããäŸã®ã»ãšãã©ã¯ãPluralsightã®Node.jså
¥éã³ãŒã¹ã§åãäžããããŸãããé
延颿°å®è¡ã¿ã€ããŒã¯ãä»ã®é¢æ°ã®å®è¡ãé
å»¶ãŸãã¯ç¹°ãè¿ãããšãã§ãã髿¬¡é¢æ°ã§ãïŒã¿ã€ããŒã¯ãã®ãããªé¢æ°ãæåã®åŒæ°ãšããŠåãåããŸãïŒã
é
å»¶å®è¡ã®äŸã次ã«ç€ºããŸãã
ãã®äŸã§ã¯ã
setTimeout
ã䜿çšããŠãã°ãªãŒãã£ã³ã°ã¡ãã»ãŒãžã4ç§éé
å»¶ããŸãã
setTimeout
ã®2çªç®ã®åŒæ°ã¯é
å»¶ïŒããªç§åäœïŒã§ãã 4ãåŸãããã«4ã1000åããŸãã
setTimeout
ã®æåã®åŒæ°ã¯ãå®è¡ãé
å»¶ãã颿°ã§ãã
nodeã³ãã³ãã§
example1.js
ãã¡ã€ã«ãå®è¡ãããšãNodeã¯4ç§éäžæåæ¢ãããŠã§ã«ã«ã ã¡ãã»ãŒãžã衚瀺ããŸãïŒãã®åŸã«çµäºãç¶ããŸãïŒã
setTimeout
ã®æåã®åŒæ°
ã¯é¢æ°ãžã®åãªã
åç
§ã§ããããšã«æ³šæããŠãã ããã
example1.js
ãªã©ã®çµã¿èŸŒã¿é¢æ°ã§ãã£ãŠã¯ãªããŸããã 以äžã¯ãçµã¿èŸŒã¿é¢æ°ã䜿çšããªãåãäŸã§ãã
const func = () => { console.log('Hello after 4 seconds'); }; setTimeout(func, 4 * 1000);
åŒæ°ãæž¡ãé
å»¶ã«
setTimeout
ã䜿çšãã
setTimeout
ãåŒæ°ãåãå Žåã
setTimeout
颿°èªäœã®æ®ãã®åŒæ°ïŒæ¢ã«åŠç¿ãã2ã€åŸïŒã䜿çšããŠãåŒæ°ã®å€ãé
延颿°ã«è»¢éã§ããŸãã
以äžã«äŸã瀺ããŸãã
äžèšã®
rocks
颿°ã¯ã2ç§é
å»¶ãã
who
åŒæ°ãåãã
setTimeout
ãåŒã³åºããšããã®ãããª
who
åŒæ°ãšããŠå€ãNode.jsããæž¡ããŸãã
node
ã³ãã³ãã§
example2.js
ãå®è¡ãããšããNode.js rocksããšãããã¬ãŒãºã2ç§åŸã«è¡šç€ºãããŸãã
ã¿ã€ããŒã¿ã¹ã¯ïŒ1ãããã£ãŠã
setTimeout
ã«ã€ããŠæ¢ã«æ€èšããè³æã«åºã¥ããŠã察å¿ããé
å»¶ã®åŸã«æ¬¡ã®2ã€ã®ã¡ãã»ãŒãžã衚瀺ããŸãã
- ãHello after 4 secondsããšããã¡ãã»ãŒãžã4ç§åŸã«è¡šç€ºãããŸãã
- ã8ç§åŸã«ããã«ã¡ã¯ããšããã¡ãã»ãŒãžã8ç§åŸã«è¡šç€ºãããŸãã
å¶éãœãªã¥ãŒã·ã§ã³ã§ã¯ãçµã¿èŸŒã¿é¢æ°ãå«ã颿°ã1ã€ã ãå®çŸ©ã§ããŸãã ããã¯ãå€ãã®
setTimeout
åŒã³åºããåã颿°ã䜿çšããå¿
èŠãããããšãæå³ããŸãã
解決çãã®åé¡ã解決ããæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
ç§ã«ãšã£ãŠã
theOneFunc
ã¯
delay
åŒæ°ãåãåããç»é¢ã«è¡šç€ºãããã¡ãã»ãŒãžã§ãã®
delay
åŒæ°ã®å€ã䜿çšããŸãã ãããã£ãŠã颿°ã¯ãé
å»¶ã®å€ã«å¿ããŠç°ãªãã¡ãã»ãŒãžã衚瀺ã§ããŸãã
次ã«ã2ã€ã®
setTimeout
åŒã³åºãã§
theOneFunc
ã䜿çšããŸãããæåã®åŒã³åºãã¯4ç§åŸã«èµ·åããã2çªç®ã®åŒã³åºãã¯8ç§åŸã«èµ·åãããŸããã ãããã®
setTimeout
åŒã³åºãã¯äž¡æ¹ãšãã
theOneFunc
delay
åŒæ°ã衚ã3çªç®ã®åŒæ°ãåãåããŸãã
nodeã³ãã³ãã§
solution1.js
ãã¡ã€ã«ãå®è¡ãããšãã¿ã¹ã¯ã®èŠä»¶ã衚瀺ãããŸããããã«ãæåã®ã¡ãã»ãŒãžã¯4ç§åŸã«è¡šç€ºããã2çªç®ã¯8ç§åŸã«è¡šç€ºãããŸãã
æ©èœãç¹°ãè¿ããŸãããããç¡å¶éã®æéã4ç§ããšã«ã¡ãã»ãŒãžã衚瀺ããããã«èŠæ±ããå Žåã¯ã©ããªããŸããïŒ
ãã¡ããã
setTimeout
ãã«ãŒãã§å²ãããšãã§ããŸãããã¿ã€ããŒé¢æ°APIã«ã¯
setInterval
颿°ãçšæãããŠãããããã䜿çšããŠä»»æã®æäœã®ãæ°žé ã®ãå®è¡ãããã°ã©ã ã§ããŸãã
setInterval
äŸã次ã«ç€ºã
setInterval
ã
ãã®ã³ãŒãã¯3ç§ããšã«ã¡ãã»ãŒãžã衚瀺ããŸãã
node
ã³ãã³ãã䜿çšããŠ
example3.js
ãå®è¡ãããšãããã»ã¹ã匷å¶çµäºãããŸã§ïŒCTRL + CïŒãNodeã¯ãã®ã³ãã³ããåºåããŸãã
ã¿ã€ããŒããã£ã³ã»ã«ããã¿ã€ããŒé¢æ°ãåŒã³åºããããšã¢ã¯ã·ã§ã³ãå²ãåœãŠãããããããã®ã¢ã¯ã·ã§ã³ã¯å®è¡åã«å
ã«æ»ãããšãã§ããŸãã
setTimeout
åŒã³åºãã¯ã¿ã€ããŒIDãè¿ãã
clearTimeout
ãåŒã³åºããŠã¿ã€ããŒããã£ã³ã»ã«ãããšãã«ãã®ã¿ã€ããŒIDã䜿çšã§ããŸãã 以äžã«äŸã瀺ããŸãã
ãã®åçŽãªã¿ã€ããŒã¯0ããªç§åŸã«ïŒã€ãŸããããã«ïŒ
timerId
ããŸããã
timerId
ã®å€ããã£ããã£ãã
clearTimeout
ãåŒã³åºããŠãã®ã¿ã€ããŒãçŽã¡ã«ãã£ã³ã»ã«ãããããããã¯çºçããŸããã
node
ã³ãã³ãã§
example4.js
ãå®è¡ãããšãNodeã¯äœãåºåããŸãã-ããã»ã¹ã¯ãã ã¡ã«çµäºããŸãã
ã¡ãªã¿ã«ãNode.jsã«ã¯ã
setTimeout
ã®å€ã0ããªç§ã«èšå®ããå¥ã®æ¹æ³ãçšæãããŠããŸãã Node.jsã¿ã€ããŒAPIã«ã¯
setImmediate
ãšåŒã°ããå¥ã®é¢æ°ããããåºæ¬çã«0ããªç§ã®å€ã§
setTimeout
ãšåãããšãè¡ããŸããããã®å Žåã¯é
å»¶ãçç¥ã§ããŸãã
setImmediate( () => console.log('I am equivalent to setTimeout with 0 ms'), );
setImmediate
颿°ã¯
ããã¹ãŠã®ãã©ãŠã¶ãŒã§ãµããŒããããŠãã
setImmediate
ã¯ãã
setImmediate
ã ã¯ã©ã€ã¢ã³ãã³ãŒãã§ã¯äœ¿çšããªãã§ãã ããã
clearTimeout
ãšãšãã«ãåãããšãè¡ã
clearInterval
颿°ããããŸããã
setInerval
åŒã³åºããããã
clearImmediate
åŒã³åºãããããŸãã
ã¿ã€ããŒé
å»¶-ä¿èšŒãããŠããªãããšåã®äŸã§ã0 msåŸã«
setTimeout
æäœãå®è¡ãããšããã®æäœã¯ããã«ïŒ
setTimeout
åŸïŒçºçããããã¹ãŠã®ã¹ã¯ãªããã³ãŒããå®å
šã«å®è¡ãããåŸïŒ
clearTimeout
åŒã³åºããå«ãïŒã«ã®ã¿çºçããŸãã
äŸã§ãã®ç¹ãæç¢ºã«ããŸãããã 0.5ç§ã§åäœããã¯ãã®åçŽãª
setTimeout
åŒã³åºããæ¬¡ã«ç€ºããŸãããããã¯èµ·ãããŸããã
ãã®äŸã§ã¿ã€ããŒãå®çŸ©ããçŽåŸã«ã倧ããª
for
ã«ãŒãã§ã©ã³ã¿ã€ã ç°å¢ãåæçã«ãããã¯ããŸãã
1e10
ã®å€ã¯1ã§ããã10åã®ãŒããããããããµã€ã¯ã«ã¯100åããã»ããµãµã€ã¯ã«ç¶ããŸãïŒååãšããŠãããã¯éè² è·ã®ããã»ããµãã·ãã¥ã¬ãŒãããŸãïŒã ãã®ã«ãŒããå®äºãããŸã§ãããŒãã¯äœãã§ããŸããã
ãã¡ãããå®éã«ã¯ããã¯éåžžã«æªãã§ããããã®äŸã¯
setTimeout
é
å»¶ãä¿èšŒãããŠããã®ã§ã¯ãªãã
æå°å€ã§ããããšãçè§£ããã®ã«åœ¹ç«ã¡
ãŸã ã 500 msã®å€ã¯ãé
å»¶ãå°ãªããšã500 msç¶ãããšãæå³ããŸãã å®éãã¹ã¯ãªããã¯ç»é¢ã«ãŠã§ã«ã«ã ã©ã€ã³ã衚瀺ããã®ã«ããªãæéãããããŸãã ãŸããããããã³ã°ãµã€ã¯ã«ãå®äºãããŸã§åŸ
ã€å¿
èŠããããŸãã
ã¿ã€ããŒã®åé¡ïŒ2ãHello Worldãã¡ãã»ãŒãžã1ç§ã«1å衚瀺ãããã5åã ã衚瀺ããã¹ã¯ãªãããäœæããŸãã 5åã®å埩åŸãã¹ã¯ãªããã¯ãå®äºãã¡ãã»ãŒãžã衚瀺ãããã®åŸããŒãããã»ã¹ãå®äºããŸãã
å¶é ïŒãã®åé¡ã解決ãããšãã
setTimeout
åŒã³åºãããšã¯ã§ããŸããã
ãã³ã ïŒã«ãŠã³ã¿ãŒãå¿
èŠã§ãã
解決çãã®åé¡ã解決ããæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
let counter = 0; const intervalId = setInterval(() => { console.log('Hello World'); counter += 1; if (counter === 5) { console.log('Done'); clearInterval(intervalId); } }, 1000);
counter
ã®åæå€ãšããŠ0ãèšå®ããŠãããidãååŸ
counter
setInterval
ãŸããã
é
延颿°ã¯ã¡ãã»ãŒãžã衚瀺ãããã®ãã³ã«ã«ãŠã³ã¿ãŒã1ã€å¢ãããŸãã é
延颿°ã®å
éšã«ã¯ãifã¹ããŒãã¡ã³ããããã5åã®ååŸ©ãæ¢ã«ééãããã©ããã確èªããŸãã 5åã®å埩åŸãããã°ã©ã ã¯ãå®äºãã衚瀺ãããã£ããã£ããã
intervalId
宿°ã䜿çšããŠééå€ãã¯ãªã¢ããŸãã ééé
å»¶ã¯1000ããªç§ã§ãã
é
延颿°ãæ£ç¢ºã«åŒã³åºãã®ã¯èª°ã§ããïŒJavaScriptãéåžžã®é¢æ°å
ã§
this
ã䜿çšããå Žåãããšãã°æ¬¡ã®ããã«ãªããŸãã
function whoCalledMe() { console.log('Caller is', this); }
this
å€ã¯ã
åŒã³åºãå
ãšäžèŽããŸãã Node REPLå
ã§äžèšã®é¢æ°ãå®çŸ©ãããšã
global
ãªããžã§ã¯ãããããåŒã³åºããŸãã ãã©ãŠã¶ã³ã³ãœãŒã«ã§é¢æ°ãå®çŸ©ãããšã
window
ãªããžã§ã¯ãããã®é¢æ°ãåŒã³åºããŸãã
颿°ããªããžã§ã¯ãã®ããããã£ãšããŠå®çŸ©ããŠãå°ãããããããããŸãããã
const obj = { id: '42', whoCalledMe() { console.log('Caller is', this); } };
ããã§ã
obj.whoCallMe
颿°ã䜿çšããŠãªã³ã¯ãçŽæ¥äœ¿çšãããšã
obj
ãªããžã§ã¯ãïŒ
id
èå¥ãããïŒãåŒã³åºãå
ãšããŠæ©èœããŸãã

ããã§ã®è³ªåã¯ã
obj.whoCallMe
ãžã®ãªã³ã¯ã
obj.whoCallMe
ã«æž¡ããšã誰ãçºä¿¡è
ã«ãªãã®ããšããããšã§ãã
ãã®å Žåã®çºä¿¡è
ã¯èª°ã§ããïŒçãã¯ãã¿ã€ããŒæ©èœãå®è¡ãããå Žæã«ãã£ãŠç°ãªããŸãã ãã®å ŽåãåŒã³åºãå
ã誰ã§ããããžã®äŸåã¯ãåã«åãå
¥ããããŸããã ãã®å Žåã颿°ãåŒã³åºãã¿ã€ããŒã®å®è£
ã«äŸåãããããåŒã³åºãå
ã®å¶åŸ¡ã倱ãããŸãã Node REPLã§ãã®ã³ãŒãããã¹ããããšã
Timeout
ãªããžã§ã¯ããåŒã³åºãå
ã«ãªããŸãã

泚ïŒããã¯ãJavaScript
this
éåžžã®é¢æ°å
this
䜿çšãããå Žåã«ã®ã¿éèŠã§ãã ç¢å°é¢æ°ã䜿çšããå ŽåãåŒã³åºãå
ã¯ãŸã£ããæ°ã«ããŸããã
ã¿ã€ããŒã¿ã¹ã¯ïŒ3ããŸããŸãªé
å»¶ã§ãHello Worldãã¡ãã»ãŒãžãç¶ç¶çã«åºåããã¹ã¯ãªãããäœæããŸãã 1ç§ã®é
å»¶ã§éå§ããåå埩ã§1ç§ãã€å¢ãããŸãã 2åç®ã®å埩ã§ã¯ãé
å»¶ã¯2ç§ã«ãªããŸãã 3çªç®-3ãªã©ã
衚瀺ãããã¡ãã»ãŒãžã«é
å»¶ãå«ããŸãã æ¬¡ã®ãããªãã®ãåŸãããã¯ãã§ãã
Hello World. 1
Hello World. 2
Hello World. 3
...
å¶é ïŒå€æ°ã¯constã䜿çšããŠã®ã¿å®çŸ©ã§ããŸãã letãŸãã¯varã䜿çšããããšã¯ã§ããŸããã
解決çãã®ã¿ã¹ã¯ã®é
å»¶æéã¯å€æ°ã§ãããããããã§ã¯
setInterval
䜿çšã§ããŸããããååž°åŒã³åºãå
ã§
setTimeout
ã䜿çšããŠééã®å®è¡ãæåã§æ§æã§ããŸãã
setTimeout
æåã«å®è¡ããã
setTimeout
ã¯ã次ã®ã¿ã€ããŒãäœæããŸãã
ããã«ã
let
/
var
䜿çšã§ããªããããååž°åŒã³åºãããšã«é
å»¶ãã€ã³ã¯ãªã¡ã³ãããã«ãŠã³ã¿ãŒã䜿çšã§ããŸããã 代ããã«ãååž°é¢æ°ã®åŒæ°ã䜿çšããŠãååž°åŒã³åºãäžã«ã€ã³ã¯ãªã¡ã³ãã§ããŸãã
ãã®åé¡ã解決ããæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
const greeting = delay => setTimeout(() => { console.log('Hello World. ' + delay); greeting(delay + 1); }, delay * 1000); greeting(1);
ã¿ã€ããŒã¿ã¹ã¯ïŒ4ã¿ã¹ã¯ïŒ3ãšåãé
å»¶æ§é ãæã€ãHello Worldãã¡ãã»ãŒãžã衚瀺ããã¹ã¯ãªãããäœæããŸãããä»åã¯5ã€ã®ã¡ãã»ãŒãžã®ã°ã«ãŒãã§ãããã°ã«ãŒãã«ã¯ã¡ã€ã³ã®é
å»¶ééããããŸãã 5ã€ã®ã¡ãã»ãŒãžã®æåã®ã°ã«ãŒãã§ã¯ãæåã®é
å»¶ã100ããªç§ã次ã®å Žåã¯200ããªç§ã3çªç®ã®å Žåã¯300ããªç§ãªã©ãéžæããŸãã
ãã®ã¹ã¯ãªããã®ä»çµã¿ã¯æ¬¡ã®ãšããã§ãã
- 100ããªç§ã§ãã¹ã¯ãªããã¯ãHello WorldããåããŠè¡šç€ºãã100ããªç§ã®ééã§5å衚瀺ããŸãã æåã®ã¡ãã»ãŒãžã¯100ããªç§åŸã«è¡šç€ºããã2çªç®ã¯200ããªç§åŸã«è¡šç€ºãããŸãã
- æåã®5ã€ã®ã¡ãã»ãŒãžã®åŸãã¹ã¯ãªããã¯ã¡ã€ã³é
å»¶ã200ããªç§å¢ããå¿
èŠããããŸãã ãããã£ãŠã6çªç®ã®ã¡ãã»ãŒãžã¯500ããªç§+ 200ããªç§ïŒ700ããªç§ïŒåŸã7çªç®-900ããªç§ã8çªç®ã®ã¡ãã»ãŒãž-1100ããªç§åŸãªã©ã«è¡šç€ºãããŸãã
- 10åã®ã¡ãã»ãŒãžã®åŸãã¹ã¯ãªããã¯ã¡ã€ã³é
å»¶ééã300ããªç§å¢ããå¿
èŠããããŸãã 11çªç®ã®ã¡ãã»ãŒãžã¯ã500ããªç§+ 1000ããªç§+ 300ããªç§ïŒ18000ããªç§ïŒåŸã«è¡šç€ºãããŸãã 12çªç®ã®ã¡ãã»ãŒãžã¯2100ããªç§åŸã«è¡šç€ºãããŸãã
ãã®ååã«ããã°ãããã°ã©ã ã¯ç¡æéã«åäœããã¯ãã§ãã
衚瀺ãããã¡ãã»ãŒãžã«é
å»¶ãå«ããŸãã æ¬¡ã®ãããªãã®ãåŸãããã¯ãã§ãïŒã³ã¡ã³ããªãïŒïŒ
Hello World. 100 // 100
Hello World. 100 // 200
Hello World. 100 // 300
Hello World. 100 // 400
Hello World. 100 // 500
Hello World. 200 // 700
Hello World. 200 // 900
Hello World. 200 // 1100
...
å¶éäºé
ïŒ
setInterval
åŒã³åºãïŒ
setTimeout
ã§ã¯ãªãïŒãš
if
ã®ã¿ã䜿çšã§ã
setInterval
ã
解決çsetInterval
åŒã³åºãã§ããåŠçã§ããªããããããã§ã¯ååž°ã䜿çšããæ¬¡ã®
setInterval
åŒã³åºãã®é
å»¶ãå¢ããå¿
èŠããããŸãã ããã«ããã®ååž°é¢æ°ã5ååŒã³åºããåŸã«ã®ã¿ãããå®è¡ãã
if
ãå¿
èŠã§ãã
èãããã解決çã¯æ¬¡ã®ãšããã§ãã
let lastIntervalId, counter = 5; const greeting = delay => { if (counter === 5) { clearInterval(lastIntervalId); lastIntervalId = setInterval(() => { console.log('Hello World. ', delay); greeting(delay + 100); }, delay); counter = 0; } counter += 1; }; greeting(100);
ãããèªãã ãã¹ãŠã®äººã«æè¬ããŸãã