跟踪异步任务完成状态的复杂层次结构。这旨在为您提供一种记录和报告异步中常见的大型递归扇出和收集类型工作流程的进度的方法。
您如何处理此完成数据取决于您,但最常见的用例是将其提供给众多进度条模块之一。
大多数进度条模块都包含一个基本版本,但我的需求更复杂。
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 = new 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 ,重量)
将otherTracker添加到此聚合组。权重决定了您预计该跟踪器完成所需的时间与其他单位的比例。例如,如果您添加一个权重为 1 的跟踪器和另一个权重为 2 的跟踪器,那么您会说第二个跟踪器的完成时间是第一个跟踪器的两倍。因此,第一个将占该跟踪器完成度的 33%,第二个将占其余 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(名称,待办事项)
通常,它们被构造为跟踪器组的一部分(通过newItem
)。
返回已完成工作与待完成工作的比率。范围为 0 到 1。如果要完成的总工作量为 0,则返回 0。
tracker.addWork(待办事项)
增加了需要完成的工作量,从而降低了完成率。触发change
事件。
tracker.completeWork(完成)
增加完成的工作量,从而提高完成率。完成的工作永远不会超过待完成的工作量。也就是说,百分比 > 100% 是不允许的。触发change
事件。
将此跟踪器标记为已完成,tracker.completed() 现在将为 1。触发change
事件。
var tracker = new TrackerStream(名称,大小,选项)
跟踪器流对象是一个传递流,每次块通过时都会更新内部跟踪器对象。它旨在跟踪下载、文件提取和其他相关活动。您可以通过将数据源通过管道传输到其中,然后将其用作数据源来使用它。
如果您的数据具有长度属性,那么该属性将用作块通过时完成的工作量。如果没有(例如,对象流),则每个块都算作完成 1 个工作单元,因此您的大小应该是正在流式传输的对象总数。
tracker.addWork(待办事项)
增加了需要完成的工作量,从而降低了完成率。触发change
事件。