Отслеживайте сложные иерархии статусов выполнения асинхронных задач. Это предназначено для того, чтобы дать вам возможность записывать и сообщать о ходе выполнения больших рекурсивных рабочих процессов разветвления и сбора данных, которые так распространены в асинхронном режиме.
Что вы будете делать с этими данными завершения, зависит от вас, но наиболее распространенным вариантом использования является передача их в один из многих модулей индикатора выполнения.
Большинство модулей индикатора выполнения включают в себя элементарную версию этого, но мои потребности были более сложными.
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.
Это приведет к генерации одного или нескольких событий change
.
Все объекты трекера отправляют события change
со следующими аргументами:
function (name, completed, tracker)
name
— это имя трекера, который первоначально создал событие, или, если у него его не было, первой содержащей группу трекеров, у которой оно было.
completed
— это процент завершения (возвращаемый методом tracker.completed()
).
tracker
— это объект трекера, на котором вы прослушиваете события.
var tracker = новая TrackerGroup ( имя )
Создает новую пустую группу агрегации трекеров. Это трекеры, статус завершения которых определяется статусом завершения других трекеров, добавленных в эту группу агрегации.
Бывший.
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 , вес )
Добавляет другой трекер в эту группу агрегации. Вес определяет, сколько времени, по вашему мнению, потребуется на завершение работы этого трекера пропорционально другим единицам. Например, если вы добавите один трекер с весом 1, а другой — с весом 2, вы говорите, что выполнение второго займет вдвое больше времени, чем первого. Таким образом, на первую долю придется 33% завершения этого трекера, а на вторую — остальные 67%.
Возвращает другойТрекер .
Вышеупомянутое в точности эквивалентно:
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 = новый трекер ( имя , задача )
Обычно они создаются как часть группы трекеров (через newItem
).
Возвращает отношение выполненной работы к работе, которую предстоит выполнить. Диапазон от 0 до 1. Если общая сумма проделанной работы равна 0, то возвращается 0.
tracker.addWork( задача )
Увеличивает объем работы, которую необходимо выполнить, тем самым уменьшая процент выполнения. Запускает событие change
.
tracker.completeWork( завершено )
Увеличьте объем выполненной работы, тем самым увеличив процент выполнения. Никогда не увеличит объем выполненной работы сверх объема запланированной работы. То есть проценты > 100 % не допускаются. Запускает событие change
.
Отмечает этот трекер как завершенный, tracker.completed() теперь будет равен 1. Вызывает событие change
.
var tracker = новый TrackerStream ( имя , размер , параметры )
Объект потока отслеживания — это сквозной поток, который обновляет внутренний объект отслеживания каждый раз, когда через него проходит блок. Он предназначен для отслеживания загрузок, извлечения файлов и других связанных действий. Вы используете его, передавая в него свой источник данных, а затем используя его в качестве источника данных.
Если ваши данные имеют атрибут длины, он используется как объем работы, выполненной при передаче фрагмента. Если это не так (например, потоки объектов), то каждый фрагмент считается завершением 1 единицы работы, поэтому ваш размер должен равняться общему количеству объектов, передаваемых в потоковом режиме.
tracker.addWork( задача )
Увеличивает объем работы, которую необходимо выполнить, тем самым уменьшая процент выполнения. Запускает событие change
.