setInterval がラ​​ンダムな引数を指定して関数を呼び出すのはなぜですか?

StackOverflow https://stackoverflow.com/questions/86269

  •  01-07-2019
  •  | 
  •  

質問

そこで、興味深い問題が発生しています。機能があれば

// 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() 入手する chartId から呼び出された場合でも引数 setInterval!の setInterval に渡すパラメータさえありません。 cycleCharts 機能するので、なぜなのか非常に困惑しています chartId が未定義でない場合 cycleCharts から呼び出されます setInterval.

役に立ちましたか?

解決

setInterval は、cycleCharts に実際のタイミング データを供給します (実際の実行時間を計算して、アニメーションで実用的な、あまり堅苦しくない応答を生成するために使用できます)

あなたが欲しい

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

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

他のヒント

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

varcycleId = setInterval(cycleCharts, 10000, 4242);

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top