Rastreie hierarquias complexas de status de conclusão de tarefas assíncronas. O objetivo é fornecer uma maneira de registrar e relatar o progresso da grande distribuição recursiva e reunir fluxos de trabalho de tipo que são tão comuns no assíncrono.
O que você faz com esses dados de conclusão depende de você, mas o caso de uso mais comum é alimentá-los em um dos muitos módulos da barra de progresso.
A maioria dos módulos da barra de progresso inclui uma versão rudimentar disso, mas minhas necessidades eram mais complexas.
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
} )
} )
Implementado em: Tracker
, TrackerGroup
, TrackerStream
Retorna a proporção entre o trabalho concluído e o trabalho a ser feito. Faixa de 0 a 1.
Implementado em: Tracker
, TrackerGroup
Marca o rastreador como concluído. Com um TrackerGroup isso marca todos os seus componentes como concluídos.
Marca todos os componentes deste rastreador como concluídos, o que por sua vez significa que tracker.completed()
para isso agora será 1.
Isso resultará na emissão de um ou mais eventos change
.
Todos os objetos rastreadores emitem eventos change
com os seguintes argumentos:
function (name, completed, tracker)
name
é o nome do rastreador que emitiu originalmente o evento ou, se não tiver um, o primeiro grupo de rastreadores que contém um.
completed
é a porcentagem concluída (conforme retornado pelo método tracker.completed()
).
tracker
é o objeto rastreador no qual você está ouvindo eventos.
var rastreador = novo TrackerGroup( nome )
Cria um novo grupo de agregação de rastreadores vazio. Esses são rastreadores cujo status de conclusão é determinado pelo status de conclusão de outros rastreadores adicionados a esse grupo de agregação.
Ex.
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( outroTracker , peso )
Adiciona o otherTracker a este grupo de agregação. O peso determina quanto tempo você espera que este rastreador leve para ser concluído em proporção a outras unidades. Por exemplo, se você adicionar um rastreador com peso 1 e outro com peso 2, estará dizendo que o segundo levará o dobro do tempo para ser concluído do primeiro. Assim sendo, o primeiro será responsável por 33% da conclusão deste rastreador e o segundo será responsável pelos outros 67%.
Retorna otherTracker .
O acima é exatamente equivalente a:
var subGroup = tracker . addUnit ( new TrackerGroup ( name ) , weight )
O acima é exatamente equivalente a:
var subItem = tracker . addUnit ( new Tracker ( name , todo ) , weight )
O acima é exatamente equivalente a:
var subStream = tracker . addUnit ( new TrackerStream ( name , todo ) , weight )
Retorna uma árvore mostrando a conclusão deste grupo de rastreadores e todos os seus filhos, incluindo a inserção recursiva de todos os filhos.
var rastreador = novo rastreador( nome , todo )
Normalmente, eles são construídos como parte de um grupo de rastreadores (via newItem
).
Retorna a proporção entre o trabalho concluído e o trabalho a ser feito. Faixa de 0 a 1. Se o trabalho total a ser realizado for 0, retornará 0.
tracker.addWork( todo )
Aumenta a quantidade de trabalho a ser feito, diminuindo assim a porcentagem de conclusão. Aciona um evento change
.
tracker.completeWork( concluído )
Aumente a quantidade de trabalho concluído, aumentando assim a porcentagem de conclusão. Nunca aumentará o trabalho concluído além da quantidade de trabalho a ser feito. Ou seja, não são permitidos percentuais > 100%. Aciona um evento change
.
Marca este rastreador como concluído, tracker.completed() agora será 1. Aciona um evento change
.
var tracker = new TrackerStream( nome , tamanho , opções )
O objeto de fluxo rastreador é um fluxo de passagem que atualiza um objeto rastreador interno cada vez que um bloco passa. Destina-se a rastrear downloads, extração de arquivos e outras atividades relacionadas. Você o usa canalizando sua fonte de dados para ele e depois usando-o como sua fonte de dados.
Se seus dados tiverem um atributo de comprimento, ele será usado como a quantidade de trabalho concluído quando o pedaço for passado. Caso contrário (por exemplo, fluxos de objetos), cada pedaço conta como conclusão de 1 unidade de trabalho; portanto, seu tamanho deve ser o número total de objetos sendo transmitidos.
tracker.addWork( todo )
Aumenta a quantidade de trabalho a ser feito, diminuindo assim a porcentagem de conclusão. Aciona um evento change
.