私はnested loop
またはelse block
の繰り返しごとに1秒ごとにスリープする必要がある巨大なネストされたforループを持っています。これは通常次のようなコードで実行されます。繰り返しの間に睡眠を持つループ
for (let i=1; i<10; i++) {
setTimeout(function timer(){
alert("hello world");
}, i*3000);
}
これはあまりにもメモリを消費するので、使用しないでください。
これは、これまでの私のコードです:
for (var i = 0; i < this.data.length; i++) {
if (this.data[i].dataTypes.length > 0) {
for (var j = 0; this.data[i].dataTypes.length; j++) {
//performed each second
this.setData(this.data[i].dataName, this.data[i].dataTypes[j]);
}
} else {
//performed each second
this.setData(this.data[i].dataName, "");
}
}
どのように私がするので、ネストされたループ、または他のブロックが毎秒実行されることを、それを書き換える必要がありますか?
しかし、私の配列の長さは20000を超えています。確かにそれは行く方法ではない。 – sanjihan
あなたは 'for'ループを使用することを熱望していない場合でも再帰を使うことができますが、いずれの方法も非常に効率的です。 –
コード内に20000のsetTimeoutsを設定しても問題ありませんか? :) – sanjihan