首页 > 解决方案 > RxJava - 如何使用 Flowable 引用的类型中的方法?

问题描述

我有两个 Flowable,我通过压缩和过滤来操作它们,如下所示:

Flowable<Position> position1 = obj1.getPosition(); // position in 3D enviroment
Flowable<Position> position2 = obj2.getPosition();

position1.zipWith(position2, (pos1, pos2) ->
    getDistance(pos1,pos2) //method returning distance between positions
).filter(distance->distance<=5).subscribe();

现在我想在类中使用方法Position,当过滤的项目像这样发出时:

position1.zipWith(position2, (pos1, pos2) ->
    getDistance(pos1,pos2) //method returning distance between positions
).filter(distance->distance<=5).subscribe(pos1.getX()-pos2.getX());

怎么做?

标签: rx-java2

解决方案


解决这个问题的最简单方法是创建像这样的包装类

class Line {
    Position first;
    Position second;
    Double distance;
}

并使用它转换您的 Rx 链

position1
    .zipWith(position2, (pos1, pos2) -> {
        double distance = getDistance(pos1,pos2);
        return Line(pos1, pos2, distance);
     })
    .filter(line -> line.distance <= 5)
    .subscribe(line.first.getX()-line.second.getX())

推荐阅读