CombineLatest
Category: Combinator
Brief: Combines values from the source sequences whenever any of the sequences have produced an element.
Input: Accepts many input types (single elements, tuples, arrays) as long as at least two are supplied
Output (System.Tuple<input1_type,input2_type,input3_type>): A tuple of inputs
The CombineLatest
operator allows you to combine the items emitted by two or more observable sequences. Items are paired whenever any of the sequences emits a new item, using the latest items emitted by each of the other observables.
The first pair is only emitted when all observables have emitted at least one item, so if an observable emits multiple items before the other observables have generated notifications, only the latest of those items will be included in the first pair.
The operator will terminate only when all observable sequences have terminated. If any of the observables terminates early, the last item emitted by that sequence will continue to be used to generate pairs whenever the remaining observables emit new items. This means the resulting sequence will be as long as the longest of the input sequences.
tip
CombineLatest
followed by Concat
can be used to synchronise multiple source nodes (e.g. CameraCapture
at <30 Hz non-triggered frame rates) to the precision of operating system jitter (~10 ms).
tip
CombineLatest
can be the reason output files contain duplicate rows. Zip
should be used instead.
Note that, when applied to multiple video sources, the output frame rate will be the sume of input frame rate. This can be solved by specifying one of the sources as the master, e.g. adding Sample
after CombineLatest
with the master as secondary input, or using WithLatestFrom
instead.