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
よく忘れるので、忘備録です。