gpt4 book ai didi

java - 合并两个 Observables/Singles 的方法有哪些?

转载 作者:行者123 更新时间:2023-11-30 05:31:06 26 4
gpt4 key购买 nike

我有这个代码:

public void testGetBlob() throws RequestException {
TestData.getNewApplication().flatMap(testApplication -> {
Client.initialize(testApplication.getAppId(), testApplication.getApiToken(), testApplication.getMasterKey());
assertNotNull(testApplication.getApiToken());
assertNotNull(testApplication.getAppId());
assertNotNull(testApplication.getMasterKey());
Entity entity = new Entity("Todo");
return entity.create();
}).flatMap(entity -> entity.setBlobProperty("text", "Hello world!".getBytes("UTF-8")))
.flatMap(isSuccess -> {
if(isSuccess) {
// need to access `entity` at this point
return Single.just(isSuccess);
} else {
return Single.just(false);
}
}).subscribe(success -> {
Browser.getWindow().getConsole().log("Blob created");
finishTest();
}, error -> {
Browser.getWindow().getConsole().error(error.getMessage());
fail();
});
delayTestFinish(5000);
}

在上面的代码中,我需要做的是能够访问 entity反对评论中的观点。如何做呢?

最佳答案

在一个运算符和另一个运算符之间只能发出一种对象类型。在您的情况下,您正在发出一个 boolean 值,但您还希望能够访问实体对象。解决方案是将两个值(实体对象和 boolean 值)包装在一个类中并发出该类。

创建一个类来包装 Entity 的发射和 setBlobProperty 的结果。

    class Pair {
private final Entity entity;
private final boolean success;

private Pair(Entity entity, boolean success) {
this.entity = entity;
this.success = success;
}

public Entity getEntity() {
return entity;
}

public boolean isSuccess() {
return success;
}
}

然后更改代码以发出该类:

public void testGetBlob() throws RequestException {
TestData.getNewApplication().flatMap(testApplication -> {
// ...
return entity.create();
}).flatMap(entity ->
entity.setBlobProperty("text", "Hello world!".getBytes("UTF-8"))
// 1. Flat map the setBlobProperty call and emit a Pair with the entity and result
.flatMap(isSuccess -> Single.just(new Pair(entity, isSuccess)))
)
.flatMap(pair -> {
if(pair.isSuccess()) {
// 2. entity is available here via pair.getEntity()
return Single.just(isSuccess);
} else {
return Single.just(false);
}
}).subscribe(success -> {
// ...
}
}

Ps:不要创建自己的 Pair 类,而是检查此 thread 中的选项之一。如果您使用 Kotlin,则有 Pair类。

关于java - 合并两个 Observables/Singles 的方法有哪些?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57541365/

26 4 0
文章推荐: java - 使用可比较的类保留 2D Arraylist 的原始索引
文章推荐: java - Java 并行流中的异常传播
文章推荐: javascript - 为什么 d3.select().style() 不适用于
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com