0

ファイルの処理が終了したかどうかを確認するために、5 秒ごとに発生するイベントがあります。

私は次のことをしています:

if (InSuppArray(item.Id) == false && item.Status() == "Queue") {
    var t = setTimeout(function () { checkQueuedSupp(item.OrderId) }, 5000);
    suppIds.push({ Id: item.OrderId, TimerId: t });
}

基本的に、複数のファイルをアップロードできるため、これによりタイマーの配列が作成され、ファイルが完了するとそれらが強制終了されます。

これは Firefox と Chrome ではうまく機能しますが、タイマーは Internet Explorer では 1 回しか起動しません。

これを行うより良い方法はありますか?私は周りを検索し、IE に関するいくつかの問題を見つけましsetTimeoutたが、それらのほとんどは、少なくとも 1 回は起動する IE では機能しないという事実をほのめかしていました。

4

2 に答える 2

0

1)最初の反復で機能していますか?はい、あなたのコードは正常に動作します。

2) 反復が問題である場合は、次の点を確認してください。

setTimeout反復的な方法ではありません。代わりに を使用しますsetInterval

if (InSuppArray(item.Id) == false && item.Status() == "Queue") {
    var t = setInterval(function () { checkQueuedSupp(item.OrderId) }, 5000);
    suppIds.push({ Id: item.OrderId, TimerId: t });
}

繰り返すようsetTimeoutにするには、 を持っているようにしてくださいrecursive

于 2013-08-30T05:21:50.303 に答える