我有一个非常简单的用例:
table
有一些条目(每个条目都有唯一的ID和索引号)button
onclick
:致电subject.onNext
,然后通过flatMap
呈现的HTML看起来(简化)如下:
<table>
<tr>
<td>Entry1</td>
<td><button onclick="delete.onNext({id:'a', index:0})"></td>
</tr>
<tr>
<td>Entry2</td>
<td><button onclick="delete.onNext({id:'b', index:1})"></td>
</tr>
</table>
删除主题/可观察性:
var delete = new Rx.Subject()
.flatMap(function(data) {
return MyService.doHTTPDelete(data.id);
})
.retry() // keep the Subject alive if HTTP call fails
.doOnError(function(err) {
console.log("Something went wrong...", err);
})
.subscribe(function(???) {
// here I need the index
});
正如您所看到的,MyService.doHTTPDelete
来电并不了解data.index
(当然也不应该!)。
我认为这是一个非常常见的用例。但我没有在网上找到解决方案。
你知道如何解决它吗?
答案 0 :(得分:2)
IsValidTest()
可以使用两个参数获取第二个函数:原始flatMap
值和第一个函数的onNext
结果:
flatMap
答案 1 :(得分:0)
我找到了一些解决方法,这非常简单。但我不知道是否有任何可能的副作用或不良行为:
var delete = new Rx.Subject()
.flatMap(function(data) {
return MyService.doHTTPDelete(data.id)
.map(function() { return data; });
})
....;