java - 如何使用 rxJava 发出乘法请求
问题描述
如何通过改造提出 10 个并行请求。请帮我解决这个问题。我尝试使用 zip 运算符,但我只能在 Java 中使用 Function9。
public Single<List<Response<MyResponse>>> getRequest(...) {
return Single.zip(getNyRequest(sessionId, RequestParams.getParams( "")),
getNyRequest(sessionId, RequestParams.getParams( "")),
getNyRequest(sessionId, RequestParams.getParams("")),
getNyRequest(sessionId, RequestParams.getParams("")),
getNyRequest(sessionId, RequestParams.getParams("")),
getNyRequest(sessionId, RequestParams.getParams("")),
getNyRequest(sessionId, RequestParams.getParams("")),
getNyRequest(sessionId, RequestParams.getParams("")),
getNyRequest(sessionId, RequestParams.getParams("")),
getNyRequest(sessionId, RequestParams.getParams("")),
(result1, result2, result3, result4, result5, result6, result7, result8, result9, result10) -> {
});
}
解决方案
您可以使用可迭代:
List<Single<String>> singles = Arrays.asList(Single.just("1"), Single.just("2"), Single.just("3"));
Single<List<String>> zip = Single.zip(singles, objects -> Stream.of(objects).map(o -> (String) o).collect(Collectors.toList()));
在你的情况下:
List<Single<Response<MyResponse>>> singles = Arrays.asList(getNyRequest(sessionId, RequestParams
.getParams("")), getNyRequest(sessionId, RequestParams.getParams("")), ....);
Single<List<Response<MyResponse>>> zip = Single.zip(singles,
objects -> Stream.of(objects).map(o -> (Response<MyResponse>) o).collect(Collectors.toList()));
编辑: 每 10 分钟重复一次:
getRequest(...).repeatWhen(c -> c.delay(10, TimeUnit.MINUTES))
.subscribe();
推荐阅读
- php - 试图获取非对象的属性“approval_code”
- javascript - 从 HTML 视图解析反应道具以反应组件
- android - android antmedia webrtc 将摄像头切换到屏幕共享,反之亦然
- json - Power Bi - 更改 Web 请求中使用的参数值(api + json)
- azure - 在 Docker 上提高 Azure 计算机视觉的性能
- php - 空值而不是 CodeIgniter 中的值
- node.js - req.file 未定义:使用 multer 快速上传图片
- r - 大样本量(180 万观察)的逻辑回归预测器仅预测 0
- linux - 在linux中使用长度重定向文件
- amazon-web-services - AWS IAM 策略模拟器:如果至少有一个区域允许操作,如何返回 true