3
鏈接5-6的最佳實踐鏈接正在執行的單個可觀察對象是什麼? 例如我有Single1-> Single2-> ... - > Single6。依次鏈接多個Observable
Single2取決於Single1的結果。 Single3取決於Single2結果等。
我一直在使用嵌套的flatMap
,但代碼變得非常長,可讀性非常低。
這種情況最好的指導方針是什麼?
鏈接5-6的最佳實踐鏈接正在執行的單個可觀察對象是什麼? 例如我有Single1-> Single2-> ... - > Single6。依次鏈接多個Observable
Single2取決於Single1的結果。 Single3取決於Single2結果等。
我一直在使用嵌套的flatMap
,但代碼變得非常長,可讀性非常低。
這種情況最好的指導方針是什麼?
你不需要巢flatMap
電話,你可以簡單地把它們連並獲得可觀察數據流的清晰鏈條:
single1
.flatMap(new Func1<Item1, Single<Item2>>() {
@Override
public Single<Item2> call(Item1 obj) {
return getSingle2(obj);
}
})
.flatMap(new Func1<Item2, Single<Item3>>() {
@Override
public Single<Item3> call(Item2 obj) {
return getSingle3(obj);
}
})
.flatMap(new Func1<Item3, Single<Item4>>() {
@Override
public Single<Item4> call(Item3 obj) {
return getSingle4(obj);
}
})
.flatMap(new Func1<Item4, Single<Item5>>() {
@Override
public Single<Item5> call(Item4 obj) {
return getSingle5(obj);
}
})
.flatMap(new Func1<Item5, Single<Item6>>() {
@Override
public Single<Item6> call(Item5 obj) {
return getSingle6(obj);
}
});
與拉姆達它可以得到很整潔:
single1
.flatMap(this::getSingle2)
.flatMap(this::getSingle3)
.flatMap(this::getSingle4)
.flatMap(this::getSingle5)
.flatMap(this::getSingle6);