rx-java – interval()和repeatWhen()之间的区别,用于从间隔中的
发布时间:2020-12-15 00:03:55 所属栏目:Java 来源:网络整理
导读:之间有什么区别: ObservableString observable = Observable .interval(0,1,TimeUnit.SECONDS) .flatMap(new Func1Long,ObservableString() { @Override public ObservableString call(Long aLong) { return Observable.just("MyString"); } }) 和: Observ
之间有什么区别:
Observable<String> observable = Observable .interval(0,1,TimeUnit.SECONDS) .flatMap(new Func1<Long,Observable<String>>() { @Override public Observable<String> call(Long aLong) { return Observable.just("MyString"); } }) 和: Observable<String> observable = Observable.just("MyString") .repeatWhen(new Func1<Observable<? extends Void>,Observable<?>>() { @Override public Observable<?> call(Observable<? extends Void> completed) { return completed.delay(1,TimeUnit.SECONDS); } }) 第二个是更清洁但实际上并考虑到背压,这两种解决方案的行为方式是否相同? 解决方法
根据您的source observable(在这种情况下只是(“MyString”)),可能会有一些差异:
> interval()将每秒运行一次(如果可能),而repeatWhen()将始终延迟()1秒.对于just()这没关系,但是如果你的源需要一段时间来运行(例如500ms)那么你会看到时间上的差异:interval()将重新订阅每1,000ms,但repeatWhen(delay())将运行每1,500ms(500ms输出1,000ms延迟). 如果你的源需要超过一秒钟,那么每个resubscription与interval()之间不会有暂停,因为它只会等到前一个flatMap()完成后再执行另一个! 我不相信这两者之间存在差异,更熟悉RxJava内部的人可能会指出更多. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |