通過一個函數(shù)將多個Observables的發(fā)射物結(jié)合到一起,基于這個函數(shù)的結(jié)果為每個結(jié)合體發(fā)射單個數(shù)據(jù)項。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/zip.c.png" alt="zip" />
Zip
操作符返回一個Obversable,它使用這個函數(shù)按順序結(jié)合兩個或多個Observables發(fā)射的數(shù)據(jù)項,然后它發(fā)射這個函數(shù)返回的結(jié)果。它按照嚴(yán)格的順序應(yīng)用這個函數(shù)。它只發(fā)射與發(fā)射數(shù)據(jù)項最少的那個Observable一樣多的數(shù)據(jù)。
RxJava將這個操作符實(shí)現(xiàn)為zip
和zipWith
。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/zip.o.png" alt="zip" />
zip
的最后一個參數(shù)接受每個Observable發(fā)射的一項數(shù)據(jù),返回被壓縮后的數(shù)據(jù),它可以接受一到九個參數(shù):一個Observable序列,或者一些發(fā)射Observable的Observables。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/zip.i.png" alt="zip" />
zipWith
操作符總是接受兩個參數(shù),第一個參數(shù)是一個Observable或者一個Iterable。
zip
和zipWith
默認(rèn)不在任何特定的操作符上執(zhí)行。