【问题标题】:Call method in an object of previous operator in lambda expression在 lambda 表达式中调用前一个运算符的对象中的方法
【发布时间】:2019-03-12 14:58:35
【问题描述】:

我有一段代码

client.confirmPayment(identity, entity.getId())
                .map(response -> response.id)
                .flatMap(itemId -> signingService.orderSigning(itemId, identity))
                .doOnSuccess(signatureOrder->signatureOrder.setRedirectUrl("XXXX"));

client.confirmPayment 方法返回 Response 类型的流

class Response{
    private String id;
    private String url;
}

有什么方法可以从doOnSuccess 运算符调用response.url 吗?

【问题讨论】:

  • 只是一个可以构建的想法 - map 将其转换为 Id, ResponseSimpleEntry... 使用当前的 id 并稍后使用 Response

标签: lambda java-8 stream rx-java


【解决方案1】:

会是这样的:

Single<Response> responseSingle = client.confirmPayment(identity, entity.getId())
    .flatMap(response -> Single.just(response)
        .flatMap(r -> signingService.orderSigning(r.id, identity))
        .doOnSuccess(order -> order.setRedirectUrl(response.url))
    );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 2014-10-25
    • 1970-01-01
    • 2016-10-05
    • 2013-01-16
    • 2014-11-13
    相关资源
    最近更新 更多