标题可能会产生误导。请随意改变。
我有一个Observable(Subject),它发出一个值。我想传递这个值来生成一个新的observable(通过flatMap),但也将它传递给flatMap的操作:
getAddressSubject
.flatMap(latLng -> getApiManagerInstance().getAddress(latLng))
.map(addressResponse ->{
// here I want to use both latLng and addressResponse
// e.g:
createObject(latLng, addressResponse);
})
答案 0 :(得分:2)
您可以将map
运算符移动到flatMap
运算符中,如:
getAddressSubject
.flatMap(latLng ->
getApiManagerInstance().getAddress(latLng).map(
addressResponse -> createObject(latLng, addressResponse))
)
答案 1 :(得分:1)
到目前为止,这是我最好的解决方案。
由于受试者可以多次使用,因此重复使用#34;上下文,你使用其中一个作为纯,另一个触发第二个observable。 然后你将它们压缩在一起:
zip( getAddressSubject,
getAddressSubject
.throttleLast(1, TimeUnit.SECONDS, AndroidSchedulers.mainThread())
.flatMap(latLng -> getApiManagerInstance().getAddress(latLng)),
(latLng, response) -> createObject(latLng, response)
))