为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 rxJava 进行乘法请求

如何使用 rxJava 进行乘法请求

BIG阳 2023-03-17 15:35:07
如何通过改造提出 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) -> {                });}
查看完整描述

1 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

您可以使用可迭代的:


  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();


查看完整回答
反对 回复 2023-03-17
  • 1 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号