非同期タスクの完了ステータスの複雑な階層を追跡します。これは、非同期でよく見られる大規模な再帰的ファンアウトおよび収集タイプのワークフローの進行状況を記録およびレポートする方法を提供することを目的としています。
この完了データをどうするかはあなた次第ですが、最も一般的な使用例は、それを多くのプログレス バー モジュールの 1 つにフィードすることです。
ほとんどのプログレスバーモジュールにはこれの初歩的なバージョンが含まれていますが、私のニーズはより複雑でした。
var TrackerGroup = require ( "are-we-there-yet" ) . TrackerGroup
var top = new TrackerGroup ( "program" )
var single = top . newItem ( "one thing" , 100 )
single . completeWork ( 20 )
console . log ( top . completed ( ) ) // 0.2
fs . stat ( "file" , function ( er , stat ) {
if ( er ) throw er
var stream = top . newStream ( "file" , stat . size )
console . log ( top . completed ( ) ) // now 0.1 as single is 50% of the job and is 20% complete
// and 50% * 20% == 10%
fs . createReadStream ( "file" ) . pipe ( stream ) . on ( "data" , function ( chunk ) {
// do stuff with chunk
} )
top . on ( "change" , function ( name ) {
// called each time a chunk is read from "file"
// top.completed() will start at 0.1 and fill up to 0.6 as the file is read
} )
} )
実装場所: Tracker
、 TrackerGroup
、 TrackerStream
完了した作業とこれから実行される作業の比率を返します。範囲は 0 ~ 1。
実装場所: Tracker
、 TrackerGroup
トラッカーを完了としてマークします。 TrackerGroup を使用すると、そのすべてのコンポーネントが完了としてマークされます。
このトラッカーのすべてのコンポーネントを完了としてマークします。これは、このトラッカーのtracker.completed()
1 になることを意味します。
これにより、1 つ以上のchange
イベントが発行されます。
すべてのトラッカー オブジェクトは、次の引数を使用してchange
イベントを発行します。
function (name, completed, tracker)
name
、最初にイベントを発行したトラッカーの名前、またはイベントを持たなかった場合は、イベントを持っていた最初の包含トラッカー グループの名前です。
completed
完了率 ( tracker.completed()
メソッドによって返される) です。
tracker
イベントをリッスンしているトラッカー オブジェクトです。
var tracker = 新しい TrackerGroup( name )
新しい空のトラッカー集約グループを作成します。これらは、この集約グループに追加された他のトラッカーの完了ステータスによって完了ステータスが決定されるトラッカーです。
元。
var tracker = new TrackerGroup ( "parent" )
var foo = tracker . newItem ( "firstChild" , 100 )
var bar = tracker . newItem ( "secondChild" , 100 )
foo . finish ( )
console . log ( tracker . completed ( ) ) // 0.5
bar . finish ( )
console . log ( tracker . completed ( ) ) // 1
tracker.addUnit( otherTracker ,重み)
otherTracker をこの集約グループに追加します。重みによって、このトラッカーが完了するまでにかかる時間が他のユニットに比例して決まります。たとえば、重み 1 のトラッカーを 1 つ追加し、重み 2 のトラッカーをもう 1 つ追加した場合、2 番目のトラッカーの完了には最初のトラッカーの 2 倍の時間がかかることになります。したがって、最初のものがこのトラッカーの完了の 33% を占め、2 つ目が残りの 67% を占めます。
otherTrackerを返します。
上記は次とまったく同じです。
var subGroup = tracker . addUnit ( new TrackerGroup ( name ) , weight )
上記は次とまったく同じです。
var subItem = tracker . addUnit ( new Tracker ( name , todo ) , weight )
上記は次とまったく同じです。
var subStream = tracker . addUnit ( new TrackerStream ( name , todo ) , weight )
すべての子を再帰的に入力することを含め、このトラッカー グループとそのすべての子の完了を示すツリーを返します。
var tracker = new Tracker( name , todo )
通常、これらはトラッカー グループの一部として構築されます ( newItem
経由)。
完了した作業とこれから実行される作業の比率を返します。 0 ~ 1 の範囲。実行する作業の合計が 0 の場合は、0 を返します。
tracker.addWork( todo )
実行する作業量が増加するため、完了率が低下します。 change
イベントをトリガーします。
tracker.completeWork(完了)
完了する作業量が増加し、完了率が向上します。 Todo の作業量を超えて完了した作業が増えることはありません。つまり、100% を超えるパーセンテージは許可されません。 change
イベントをトリガーします。
このトラッカーを完了としてマークします。tracker.completed() は 1 になります。 change
イベントをトリガーします。
var tracker = new TrackerStream(名前,サイズ,オプション)
トラッカー ストリーム オブジェクトは、ブロックが通過するたびに内部トラッカー オブジェクトを更新するパススルー ストリームです。ダウンロード、ファイルの抽出、その他の関連アクティビティを追跡することを目的としています。これを使用するには、データ ソースをパイプして、それをデータ ソースとして使用します。
データに長さ属性がある場合、それはチャンクが通過するときに完了した作業量として使用されます。そうでない場合 (オブジェクト ストリームなど)、各チャンクは 1 つの作業単位を完了したものとしてカウントされるため、サイズはストリーミングされるオブジェクトの合計数になるはずです。
tracker.addWork( todo )
実行する作業量が増加するため、完了率が低下します。 change
イベントをトリガーします。