【发布时间】:2017-05-07 12:26:36
【问题描述】:
我是 RX-Java 的新手,我正在尝试设计一个 API,其流程如下所述:
Make REST call A to load data
|
|
data not found? | data found
------------------------------------
| |
| |
| |
Make REST Call B Load DB Data 1
| |
| |
| _________________________
| | Parallel |
| | |
| | |
| (condition using DB data 1) (condition using DB data 1)
| Load REST Data C Load DB Data 2
| | |
| |________________________|
| |
| |
Build Response Build Response
假设 DB 方法和服务调用返回 Observable,需要对上面使用 rx 运算符的框架流程进行一些澄清吗?
我将在下面分享阻塞伪代码:
Response = REST_Call_1(); // on error throw Exception
if (isResponseValid(response)) { // returns Boolean
if (responseUnderReview(response)) { // validation func
throw Exception;
} else {
//db_data_1 and db_data_2 can be parallel
db_data_1 = Load_DB_Data_1();
// Load data_3 and data_2 based on db_data_1
if (is_data_3_required(db_data_1)) {
data_3 = REST_call_2();
}
if (is_data_2_required(db_data_1)) {
db_data_2 = REST_call_2();
}
buildResponse(db_data_1, db_data_2, data_3, Response);
}
} else {
Response = REST_Call_3(); // on error throw Exception
buildResponse(response);
}
我正在研究一种完整的非阻塞异步方法。
【问题讨论】:
标签: java spring-mvc rx-java reactive-programming