3

だから、私は奇妙な問題を見ています。私に機能があれば

// counter wraps around to beginning eventually, omitted for clarity.
var counter; 
cycleCharts(chartId) {
    // chartId should be undefined when called from setInterval
    console.log('chartId: ' + chartId);
    if(typeof chartId == 'undefined' || chartId < 0) {
        next = counter++;
    }
    else {
        next = chartId;
    }
    // ... do stuff to display the next chart
}

この関数は、ユーザー アクションによって明示的に呼び出すことができます。その場合chartId、 は引数として渡され、選択されたグラフが表示されます。または、自動再生モードにすることもできます。その場合setInterval、次のように初期化されたによって呼び出されます。

var cycleId = setInterval(cycleCharts, 10000);

奇妙なことは、実際にはcycleCharts()get achartId引数が呼び出された場合でもsetInterval! には関数setIntervalに渡すパラメータさえないので、が から呼び出されたときに が定義されていないcycleCharts理由について非常に困惑しています。chartIdcycleChartssetInterval

4

3 に答える 3

4

setInterval は、cycleCharts に実際のタイミング データを供給しています (そのため、実行された実際の時間を計算し、アニメーションで最も実用的な、より安定した応答を生成するために使用できます)。

あなたが欲しい

 var cycleId = setInterval(function(){ cycleCharts(); }, 10000); 

(この動作は標準化されていない可能性があるため、過度に依存しないでください)

于 2008-09-17T18:48:50.033 に答える
3

コールバックが呼び出されるのに何ミリ秒遅れたかがわかります。

于 2008-09-17T18:53:18.383 に答える
1

var cycleId = setInterval(cycleCharts, 10000, 4242);

3 番目のパラメーター以降 - それらは関数に渡されるため、私の例では chartId として 4242 を送信します。あなたが提起した質問に対する答えではないかもしれませんが、あなたの問題に対する解決策かもしれませんか? 取得する値は、メソッドの受け渡し/呼び出し時にスタックにあるものからランダムだと思います。

于 2008-09-17T18:48:57.397 に答える