RxJS如何在可观察量之间切换和暂停?

时间:2016-12-02 11:02:00

标签: javascript rxjs observable

您好我从RxJS开始,我有解决下一个问题但我不喜欢它,希望您能提供更好的解决方案:

想象一下,我们想要切换2个流:

  • 请求
  • 超时

然后,我们想要在它们之间切换,但是当其他有事件并且暂停时会恢复一个。例如。我们在成功时执行请求,执行超时,在完成请求时完成请求,在完成时执行超时,等等。

在我的解决方案中,我用间隔模拟了请求,并使用了" pausable()" ,但我不喜欢这个解决方案的可扩展性:

public function search()
{
    $searchQuery = isset($this->request->query['q']) ? $this->request->query['q'] : "";
    $searchQuery = "dfd";
    $this->paginate = [
        'contain' => ['Customers']
    ];

    $projectsFiltered = $this->Projects->find('all')->where(['Projects.archived' => 0, 'Projects.name LIKE' => "%$searchQuery%"]);
    $projects = $this->paginate($projectsFiltered);

    $this->set(compact('projects'));
    $this->set('_serialize', ['projects']);
    $this->set('query', $searchQuery);
}

RxJS专家如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

你有问题的答案。 我建议使用switchMap http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-switchMap

requestStream.switchMap(()=>Rx.Observable.interval(500));

我不认为确实需要一个可以使用的东西。

<强>更新

由于OP要求第二个observable在第一个之后启动, 应该使用ConcatMap。