如何从动态创建和销毁的源构建Observable?

时间:2018-09-28 23:05:08

标签: rxjs rx-java rx-java2 reactivex

我的问题类似于这个RXJS: Single Observable from dynamically created Observables(在那里没有答案)。

我想连续解析一些页面。在主页上,我可以获取要解析的页面链接的列表。链接列表随时间变化。然后,我按照链接进行操作,并连续地分析页面,直到它们的链接从主页上消失,然后开始分析出现在主页上的新页面。

我现在的设置如下。我有一个给定URL的类,该类可以返回连续发射的项Observable(解析来自主页的单个链接)。这很好。但是,我希望有一个“主”类,该类将能够返回来自多个页面的相同项的Observable。我的问题是页面列表正在更改(基础Observable的列表也在更改,我不能只使用Observable.merge

TL; DR : 我有多个Observable要合并。但是Observable的列表正在动态变化,我不知道该如何处理。

我该如何处理?

1 个答案:

答案 0 :(得分:1)

如果您已经具有“主页”的“可观察”页面,并且具有根据此数据获取项目的功能。您可以使用switchMap运算符来“切换”此动态更改的列表,例如:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<form data-role="tocart-form" name="dynamicForm" id="dynamForm" action="http://www.example.com/dynamicbuy.php" method="POST">
  <input type="hidden" name="product" value="4">
  <input type="hidden" name="uenc" value="aHR0c">
  <input name="form_key" type="hidden" value="eG4oiXalmxVw4hDx">
  <input name="price" type="hidden" value="">
  <input type="submit" name="submit" value="Buy" class="buttonBuy">
</form>

其中:

  • getMainPages().pipe( switchMap(main => getItemsFromMultiplePages(main)) ) -返回可观察的主页数据
  • getMainPages()-返回通过组合(也许使用getItemsFromMultiplePages(main))来自多个页面的数据而创建的可观察项