私はこのプログラムを終了するのにとても近く、この最後の部分を理解することはできません。私はランダムに生成された数字をつかむためにサーバに手を差し伸べるWebページを持っています。そしてそれをグラフにプロットします。 2秒ごとにデータポイントをプロットするように設定する必要があり、setInterval
コマンドを設定する方法がわかりません。 for
ループで動作させることができますが、これは明らかに時間がかかりません。また、タイマーを使用しようとすると問題が発生する可能性がある特定のしきい値を超えて制限を設定するとクラッシュする。私が試したことのいくつかと一緒にコードを投稿します。最初タイマーにコールバック関数を設定する
コード:
function plotData(dataSet)
{
var x = xScale+20; // 20 = margin length
var y = 260; //origin of graph
context.strokeStyle="#0000FF";
context.beginPath();
for (i = 1; i <= 10; i++)
{
getRequest(function(random)
{
var diff = (dataSet[0]*100) - (dataSet[1] * 100);
diff = diff/5;
y = y+(diff*23);
context.lineTo(x, y);
context.moveTo(x, y);
context.stroke();
x=x+xScale;
console.log("dataSet = "+dataSet[0]+", "+dataSet[1]);
dataSet[0] = dataSet[1];
});
}
}
私はそれが今のデバッグ目的でループに設定されています。
コールバック関数はXMLHttpRequest
に達し、乱数を取得します(必要に応じてこのコードを投稿することもできます)。
私がしようとしていたのは、setInterval
と2番目の関数呼び出しで関数を停止するブール値を実装することでした。
このような何か:
var isRunning = false;
function plotData(dataSet)
{
if (isRunning == false)
{
isRunning = true;
}
if (isRunning == true)
{
isRunning = false;
myTimer = clearInterval();
}
var myTimer;
var x = xScale+20; // 20 = margin length
var y = 260; //origin of graph
context.strokeStyle="#0000FF";
context.beginPath();
while (isRunning == true)
{
myTimer = setInterval(function()
{
getRequest(function(random)
{
var diff = (dataSet[0]*100) - (dataSet[1] * 100);
diff = diff/5;
y = y+(diff*23);
context.lineTo(x, y);
context.moveTo(x, y);
context.stroke();
x=x+xScale;
console.log("dataSet = "+dataSet[0]+", "+dataSet[1]);
dataSet[0] = dataSet[1];
});
}, 2000);
}
}
私はハンドリングのためにグローバルなブールisRunning
を追加しました。
以前は偽(進行中であることを示す)していた場合、isRunning
をtrueに設定しました。
以前はtrueの場合はisRunning
をfalseに設定してからclearInterval
に進み、それを停止します。このすべてがやったisRunning == true
は、私のプログラムがクラッシュしながら
そして最後には、実行するコールバック関数のためwhile
ループを設定します。この場合、どうすればsetInterval
関数を正しく使用できますか?
'しばらく(isRunning == true)を { myTimer =のsetInterval(関数()'新しい間隔あなたのループのすべての反復を追加している...と、このコードは、ほとんどのブラウザに –
良いキャッチをロックします。これはコードを 'setInterval'関数に埋め込む正しい構文ですか? –
ちょうどそれをチェックした、これは正しい構文です。助けてくれてありがとう! –