コンテンツにスキップ

zip

複数の Observable の発行をインデックスごとにペアリングして結合します。 すべてのソースが n 番目の値を発行するのを待ってから n 番目のタプルを発行します。 いずれかのソースが完了すると完了します。

Timeline of observable eventsABCTimeline of observable events123
zip
Timeline of observable eventsA,1B,2C,3
// Timeline:
//
// letters$ 'A' 'B' 'C'
// numbers$ 1 2 3
// zipped$ ['A',1] ['B',2] ['C',3]
//
// Explanation:
// - zip pairs values by their index from multiple sources
// - Waits for all sources to emit at the same index
// - Completes when any source completes
const [letters$, setLetter] = createState<string>('A');
const [numbers$, setNumber] = createState<number>(1);
const zipped$ = zip([letters$, numbers$]);
const valueHistory: (readonly [string, number])[] = [];
zipped$.subscribe(([letter, num]) => {
valueHistory.push([letter, num]);
});
for (const letter of ['B', 'C']) {
setLetter(letter);
}
for (const num of [2, 3]) {
setNumber(num);
}
assert.deepStrictEqual(valueHistory, [
['A', 1],
['B', 2],
['C', 3],
]);

View source on GitHub