在反应器中对两个不同的 Mono 进行组合订阅
Do a combine subscribe on two different Mono in reactor
我有两个单声道
Mono<Profile> profile;
Mono<Account> account;
Profile.java
public class Profile{
int id;
String name;
}
Account.java
public class Account{
int id;
String password;
}
我有一项服务 class 可以将这两个单声道保存到 couchbase 中。
服务 class returns Mono 的保存功能。
有没有一种方法可以让一个订阅者自己将这两个 Mono 一次保存到数据库中。
像这样...
createService.save(profile)..useOfSomeFunction..createService.save(account).subscribe();
通过这种方式,我可以一次只用一个订阅者保存两个文档。
有人可以帮忙吗?
是的。如果你想:
- 同时保存两者但不关心 return 值使用
Mono.when(save(account), save(profile))
- 要一个接一个地保存,请使用
save(account).then(save(profile))
(您只会看到第二次调用的结果)
- 要同时保存两者并对结果进行处理,请使用
Mono.zip(save(account), save(profile), (acc, prof) -> doSomething(...))
我有两个单声道
Mono<Profile> profile;
Mono<Account> account;
Profile.java
public class Profile{
int id;
String name;
}
Account.java
public class Account{
int id;
String password;
}
我有一项服务 class 可以将这两个单声道保存到 couchbase 中。 服务 class returns Mono 的保存功能。 有没有一种方法可以让一个订阅者自己将这两个 Mono 一次保存到数据库中。
像这样...
createService.save(profile)..useOfSomeFunction..createService.save(account).subscribe();
通过这种方式,我可以一次只用一个订阅者保存两个文档。
有人可以帮忙吗?
是的。如果你想:
- 同时保存两者但不关心 return 值使用
Mono.when(save(account), save(profile))
- 要一个接一个地保存,请使用
save(account).then(save(profile))
(您只会看到第二次调用的结果) - 要同时保存两者并对结果进行处理,请使用
Mono.zip(save(account), save(profile), (acc, prof) -> doSomething(...))