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