
setInterval
設定した時間毎に処理を繰り返す。
書き方
let 変数A;
変数A = setInterval(() =>
{
ここに繰り返す処理を書く
},サイクル);
変数Aは繰り返しを終了する時に使用する。
サイクルはms単位。
1秒毎であれば1000とする。
例
let counter = 0;
let timer;
timer = setInterval(() =>
{
counter++;
console.log(counter + "回目");
if ( counter >= 10 )
clearInterval(timer);
},500);
右側に入力する内容
500ms毎にコンソールに出力する。
10回繰り返したら終わる。
結果

10回表示したら、繰り返し処理を終了する。
setTimeout
指定した時間後に処理を1回だけ実行する。
書き方
let 変数A;
timer = setTimeout(() =>
{
指定した時間経過後の処理をここに書く
},デュレイ);
変数Aは処理を終了する場合に使用する。
デュレイで指定した時間経過後に処理が実行される。
例
let timer;
timer = setTimeout(() =>
{
console.log("1行後に実行された。");
},1000);
1秒後にコンソールに1度だけ出力する。
let timer;
let timer1;
timer = setTimeout(() =>
{
console.log("1行後に実行された。");
},1000);
timer1 = setTimeout(() =>
{
clearTimeout(timer);
console.log("500ms後に処理を終了した");
},500);
最初のsetTimeoutは1秒後に実行される。
次のsetTimeoutは0.5秒後に実行される。
2つ目で最初のsetTimeoutを中止する。
表示

プログラムを実行して1秒後にコンソールに表示される。

最初のsetTimeoutが実行される前に、2つ目のsetTimeoutで最初のsetTimeoutを中止した。
2つ以上のsetInterval
let counter = 0;
let counter1 = 0;
let timer = setInterval(() =>
{
counter++;
console.log("1番目のsetInterval-->" + counter + "回目");
}, 500);
let timer1 = setInterval(() =>
{
counter1++;
console.log("2番目のsetInterval-->" + counter1 + "回目");
}, 300);
実行けっかは?

くちゃくちゃ、当然っちぁ当然。
これが、JavaScriptの良い所でもあるし悪いところでもある。
じゃぁ順番に1つ目のsetIntervalが終わってから次のsetIntervalを実行するには?。
setIntervalとsetTimeout、Promiseの組み合わせ
// 最初のsetInterval
myFuncA = (() =>
{
return new Promise((resolve,reject) =>
{
let counter = 0;
let timer = setInterval(() =>
{
counter++;
console.log("myFuncA" + counter + "回目");
}, 500);
setTimeout(() =>
{
clearTimeout(timer)
resolve();
},2000);
});
});
// 2つ目のsetInterval
myFuncB = ((text) =>
{
return new Promise((resolve,reject) =>
{
let counter = 0;
let timer = setInterval(() =>
{
counter++;
console.log("myFuncB" + counter + "回目");
}, 500);
setTimeout(() =>
{
clearTimeout(timer)
resolve();
},2000);
});
});
// functionを実行
myFuncA()
.then(function()
{
return myFuncB();
});
同じような関数を2つ用意。
1つでもいいがあえて2つにした。
0.5秒毎にコンソール出力。
2秒後に中止。
実行してみると!!。

ちゃんと、myFuncAが終わってからmyFunBが実行されているのが分かる。


コメント