Suivez les hiérarchies complexes des statuts d’achèvement des tâches asynchrones. Ceci est destiné à vous donner un moyen d'enregistrer et de signaler la progression de la grande diffusion récursive et de rassembler les flux de travail de type si courants en asynchrone.
Ce que vous faites avec ces données d'achèvement dépend de vous, mais le cas d'utilisation le plus courant consiste à les transmettre à l'un des nombreux modules de barre de progression.
La plupart des modules de barre de progression en incluent une version rudimentaire, mais mes besoins étaient plus complexes.
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
} )
} )
Implémenté dans : Tracker
, TrackerGroup
, TrackerStream
Renvoie le rapport entre le travail terminé et le travail à effectuer. Plage de 0 à 1.
Implémenté dans : Tracker
, TrackerGroup
Marque le tracker comme terminé. Avec un TrackerGroup, cela marque tous ses composants comme terminés.
Marque tous les composants de ce tracker comme terminés, ce qui signifie que tracker.completed()
pour cela sera désormais 1.
Cela entraînera l’émission d’un ou plusieurs événements change
.
Tous les objets de suivi émettent des événements change
avec les arguments suivants :
function (name, completed, tracker)
name
est le nom du tracker qui a émis l'événement à l'origine, ou s'il n'en avait pas, le premier groupe de trackers contenant un qui en avait un.
completed
est le pourcentage achevé (tel que renvoyé par la méthode tracker.completed()
).
tracker
est l'objet de suivi sur lequel vous écoutez les événements.
var tracker = new TrackerGroup ( nom )
Crée un nouveau groupe d'agrégation de trackers vide. Il s'agit de trackers dont le statut d'achèvement est déterminé par le statut d'achèvement des autres trackers ajoutés à ce groupe d'agrégation.
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 ( autreTracker , poids )
Ajoute l' autreTracker à ce groupe d'agrégation. Le poids détermine le temps que vous attendez pour que ce tracker soit terminé, proportionnellement aux autres unités. Ainsi, par exemple, si vous ajoutez un tracker avec un poids de 1 et un autre avec un poids de 2, vous dites que le second prendra deux fois plus de temps que le premier. A ce titre, le premier comptera pour 33% de la réalisation de ce tracker et le second représentera les 67% restants.
Renvoie autreTracker .
Ce qui précède équivaut exactement à :
var subGroup = tracker . addUnit ( new TrackerGroup ( name ) , weight )
Ce qui précède équivaut exactement à :
var subItem = tracker . addUnit ( new Tracker ( name , todo ) , weight )
Ce qui précède équivaut exactement à :
var subStream = tracker . addUnit ( new TrackerStream ( name , todo ) , weight )
Renvoie un arbre montrant l'achèvement de ce groupe de suivi et de tous ses enfants, y compris la saisie récursive de tous les enfants.
var tracker = new Tracker ( nom , tâche )
Habituellement, ceux-ci sont construits dans le cadre d'un groupe de suivi (via newItem
).
Renvoie le rapport entre le travail terminé et le travail à effectuer. Plage de 0 à 1. Si le travail total à effectuer est de 0, il renverra 0.
tracker.addWork ( à faire )
Augmente la quantité de travail à effectuer, diminuant ainsi le pourcentage d'achèvement. Déclenche un événement change
.
tracker.completeWork ( terminé )
Augmentez la quantité de travail terminé, augmentant ainsi le pourcentage d’achèvement. N'augmentera jamais le travail accompli au-delà de la quantité de travail à faire. Autrement dit, les pourcentages > 100 % ne sont pas autorisés. Déclenche un événement change
.
Marque ce tracker comme terminé, tracker.completed() sera désormais 1. Déclenche un événement change
.
var tracker = new TrackerStream ( nom , taille , options )
L'objet de flux de suivi est un flux de passage qui met à jour un objet de suivi interne à chaque passage d'un bloc. Il est destiné à suivre les téléchargements, l'extraction de fichiers et d'autres activités connexes. Vous l'utilisez en y insérant votre source de données, puis en l'utilisant comme source de données.
Si vos données ont un attribut de longueur, celui-ci est utilisé comme quantité de travail effectué lorsque le bloc est transmis. Si ce n'est pas le cas (par exemple, les flux d'objets), alors chaque morceau compte comme complétant 1 unité de travail, votre taille doit donc correspondre au nombre total d'objets diffusés.
tracker.addWork ( à faire )
Augmente la quantité de travail à effectuer, diminuant ainsi le pourcentage d'achèvement. Déclenche un événement change
.