비동기 작업 완료 상태의 복잡한 계층 구조를 추적합니다. 이는 비동기식에서 매우 일반적인 대규모 재귀 팬아웃 및 수집 유형 워크플로의 진행 상황을 기록하고 보고하는 방법을 제공하기 위한 것입니다.
이 완료 데이터로 무엇을 할지는 당신에게 달려 있지만, 가장 일반적인 사용 사례는 이를 많은 진행률 표시줄 모듈 중 하나에 제공하는 것입니다.
대부분의 진행률 표시줄 모듈에는 이것의 기초적인 버전이 포함되어 있지만 요구 사항은 더 복잡했습니다.
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 , 무게 )
이 집계 그룹에 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 = 새 추적기( 이름 , 할일 )
일반적으로 이는 추적기 그룹의 일부로 구성됩니다( newItem
통해).
완료된 작업과 완료할 작업의 비율을 반환합니다. 범위는 0~1입니다. 수행할 총 작업이 0이면 0을 반환합니다.
tracker.addWork( 할 일 )
수행해야 할 작업량이 증가하여 완료율이 감소합니다. change
이벤트를 트리거합니다.
tracker.completeWork( 완료 )
완료된 작업량을 늘려 완료율을 높입니다. 해야 할 일의 양을 넘어서 완료한 일을 결코 늘리지 않을 것입니다. 즉, 백분율 > 100%는 허용되지 않습니다. change
이벤트를 트리거합니다.
이 추적기를 완료된 것으로 표시합니다. tracker.completed()는 이제 1이 됩니다. change
이벤트를 트리거합니다.
var tracker = new TrackerStream( 이름 , 크기 , 옵션 )
추적기 스트림 개체는 블록이 통과할 때마다 내부 추적기 개체를 업데이트하는 통과 스트림입니다. 다운로드, 파일 추출 및 기타 관련 활동을 추적하기 위한 것입니다. 데이터 소스를 파이프에 연결한 다음 데이터 소스로 사용하여 사용합니다.
데이터에 길이 속성이 있는 경우 청크가 전달될 때 완료된 작업량으로 사용됩니다. 그렇지 않은 경우(예: 개체 스트리밍) 각 청크는 1개의 작업 단위를 완료한 것으로 계산되므로 크기는 스트리밍되는 개체의 총 개수가 되어야 합니다.
tracker.addWork( 할 일 )
수행해야 할 작업량이 증가하여 완료율이 감소합니다. change
이벤트를 트리거합니다.