Lacak hierarki kompleks status penyelesaian tugas asinkron. Hal ini dimaksudkan untuk memberi Anda cara mencatat dan melaporkan kemajuan alur kerja jenis penyebaran dan pengumpulan rekursif besar yang sangat umum dalam asinkron.
Apa yang Anda lakukan dengan data penyelesaian ini terserah Anda, namun kasus penggunaan yang paling umum adalah memasukkannya ke salah satu dari banyak modul bilah kemajuan.
Sebagian besar modul bilah kemajuan menyertakan versi yang belum sempurna, tetapi kebutuhan saya lebih kompleks.
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
} )
} )
Diimplementasikan di: Tracker
, TrackerGroup
, TrackerStream
Mengembalikan rasio pekerjaan yang diselesaikan dengan pekerjaan yang harus diselesaikan. Rentang 0 hingga 1.
Diimplementasikan di: Tracker
, TrackerGroup
Menandai pelacak sebagai selesai. Dengan TrackerGroup, ini menandai semua komponennya telah selesai.
Menandai semua komponen pelacak ini sebagai selesai, yang berarti tracker.completed()
untuk ini sekarang menjadi 1.
Hal ini akan menghasilkan satu atau lebih peristiwa change
yang dikeluarkan.
Semua objek pelacak mengeluarkan peristiwa change
dengan argumen berikut:
function (name, completed, tracker)
name
adalah nama pelacak yang pertama kali mengeluarkan peristiwa tersebut, atau jika tidak ada, yang pertama berisi grup pelacak yang memilikinya.
completed
adalah persentase selesai (seperti yang dikembalikan oleh metode tracker.completed()
).
tracker
adalah objek pelacak tempat Anda mendengarkan acara.
var pelacak = TrackerGroup baru ( nama )
Membuat grup agregasi pelacak kosong baru. Ini adalah pelacak yang status penyelesaiannya ditentukan oleh status penyelesaian pelacak lain yang ditambahkan ke grup agregasi ini.
Mantan.
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
pelacak.addUnit( Pelacak lain , berat )
Menambahkan Pelacak lain ke grup agregasi ini. Bobot menentukan berapa lama waktu yang Anda harapkan untuk menyelesaikan pelacak ini secara proporsional dengan unit lainnya. Jadi misalnya, jika Anda menambahkan satu pelacak dengan bobot 1 dan pelacak lainnya dengan bobot 2, Anda mengatakan pelacak kedua akan membutuhkan waktu dua kali lebih lama untuk diselesaikan dibandingkan pelacak pertama. Dengan demikian, yang pertama akan menyumbang 33% dari penyelesaian pelacak ini dan yang kedua akan menyumbang 67% lainnya.
Mengembalikan otherTracker .
Di atas sama persis dengan:
var subGroup = tracker . addUnit ( new TrackerGroup ( name ) , weight )
Di atas sama persis dengan:
var subItem = tracker . addUnit ( new Tracker ( name , todo ) , weight )
Di atas sama persis dengan:
var subStream = tracker . addUnit ( new TrackerStream ( name , todo ) , weight )
Mengembalikan pohon yang menunjukkan penyelesaian grup pelacak ini dan semua turunannya, termasuk memasukkan semua turunan secara rekursif.
var pelacak = Pelacak baru ( nama , tugas )
Biasanya ini dibuat sebagai bagian dari grup pelacak (melalui newItem
).
Mengembalikan rasio pekerjaan yang diselesaikan dengan pekerjaan yang harus diselesaikan. Rentang 0 sampai 1. Jika total usaha yang harus dilakukan adalah 0 maka akan menghasilkan 0.
pelacak.tambahkan Pekerjaan( rencana )
Meningkatkan jumlah pekerjaan yang harus diselesaikan, sehingga menurunkan persentase penyelesaian. Memicu peristiwa change
.
pelacak.lengkapPekerjaan( selesai )
Meningkatkan jumlah pekerjaan yang diselesaikan, sehingga meningkatkan persentase penyelesaian. Tidak akan pernah menambah pekerjaan yang diselesaikan melebihi jumlah pekerjaan yang harus dilakukan. Artinya, persentase > 100% tidak diperbolehkan. Memicu peristiwa change
.
Menandai pelacak ini sebagai selesai, pelacak.selesai() sekarang akan menjadi 1. Memicu peristiwa change
.
var pelacak = TrackerStream baru ( nama , ukuran , opsi )
Objek aliran pelacak adalah aliran tembus yang memperbarui objek pelacak internal setiap kali sebuah blok melewatinya. Ini dimaksudkan untuk melacak unduhan, ekstraksi file, dan aktivitas terkait lainnya. Anda menggunakannya dengan menyalurkan sumber data Anda ke dalamnya dan kemudian menggunakannya sebagai sumber data Anda.
Jika data Anda memiliki atribut panjang maka itu digunakan sebagai jumlah pekerjaan yang diselesaikan ketika potongan tersebut dilewati. Jika tidak (misalnya, aliran objek) maka setiap potongan dihitung sebagai menyelesaikan 1 unit pekerjaan, jadi ukuran Anda harus merupakan jumlah total objek yang dialirkan.
pelacak.tambahkan Pekerjaan( rencana )
Meningkatkan jumlah pekerjaan yang harus diselesaikan, sehingga menurunkan persentase penyelesaian. Memicu peristiwa change
.