アイティプランターで水耕栽培

nodeでsetInterval

2018年4月14日 - 未分類

最近、node(JavaScript)とpythonの両方を使っているせいで、いろいろ混乱しております。

nodeでsetIntervalしたい時、次のように書いてしまいますよね。

for(var i = 0; i < 3; i++) {
setTimeout(function(i) {
console.log('func0 ='+i);
}, 1000);
}
console.log('main0='+i);

でも、これは、正しく動作しません。

正しくは、以下のように、bindが必要です。

for(var i = 0; i < 3; i++) {
setTimeout(function(i) {
console.log('func1 ='+i);
}.bind(null, i), 1000);
}
console.log('main1='+i);

実行してみると、func0では、undefinedとなります。

main0=3
main1=3
func0 =undefined
func0 =undefined
func0 =undefined
func1 =0
func1 =1
func1 =2

よく忘れるので、忘備録です。

Translate »