【发布时间】:2016-05-18 15:00:37
【问题描述】:
我的目标是通过抛出异常来限制并行执行请求的数量。
例如,我只想要一个执行请求:
someApi.getUser(
result -> print("ok: " + result), exception -> print("error: " + exception)
); // this request will be executed in 5 seconds
someApi.getServerInfo(
result -> print("ok: " + result), exception -> print("error: " + exception)
); // there I want to catch exception like ExecutorIsBusy
如何使用 Retrofit 2.0 实现它?
【问题讨论】:
-
这并不能完全回答您的问题,但它可能会为您指明正确的方向。我在这里考虑两种可能性。首先,查看此链接stackoverflow.com/questions/23255523/…。它适用于 Retrofit 1 而不是 2,所以我不确定它不能应用。其次,您可以将调用转换为可观察的并使用条件运算符来防止其他订阅发生,直到当前订阅完成。
-
速率限制最好在服务器端设置...根据您使用的框架(如 laravel、django、express 等)使用用户 ID 或 IP 地址。这种方式不会影响性能,而且仅那些恶作剧的用户将面临速率限制