我是RxJava的新手(特别是RxJava2),而且我对一个看似相对简单的操作有些麻烦。我需要从db获取一些数据,遍历数据(它表示为列表),对每个项执行操作,将数据包装在另一个对象中并返回。这就是我到目前为止所做的:
mDataManager
.getStuffList(id)
.flatMapIterable(listOfStuff -> listOfStuff)
.flatMap(item ->
mDataManager
.performCount(id, item.getTitle())
.doOnNext(item::setCounter)
.takeLast(1)
.map(counter -> item))
.toList()
.toObservable()
.flatMap(listOfStuff -> Observable.just(new StuffWrapper(listOfStuff));
我遇到的问题是我的数据管理员呼叫永远不会完成。这个想法是,每当底层数据发生变化时,UI也会发生变化。但是,如果没有完成这些调用,toList()就不会发出该事件。
答案 0 :(得分:0)
在RxJava 2中,$('#button1').on('click', function() {
var coinAmount = $('#bitcoin').val(),
coinContent = 'BTC amount requested: ' + coinAmount,
dollarAmount = $('#cad').val(),
dollarContent = 'Market: $' + dollarAmount;
$('#btc-amount').html(coinContent);
$('#cad-quote').html(dollarContent);
});
返回toList
:它相当于只有一个项目的Single
。您可以通过添加Observable
将其转换为Observable,但通常不需要这样做。
关于您的其他更改,.toObservable
是什么意思?您的数据管理员是否会通知您数据更改?
编辑:如果您的whenever the underlying data changes
调用返回发出多个项目的mDataManager.getStuffList(id)
(也就是说,它永远不会完成但总是在更改后发出最新的数据集),那么您需要执行类似的操作这样:
Observable