【问题标题】:Process interval tick based on condition RXJS根据条件 RXJS 处理间隔滴答
【发布时间】:2017-11-14 01:59:21
【问题描述】:

我的代码中有以下间隔,我想在其中运行一些逻辑,但是我需要做一些查询才能知道我是否可以处理开发的逻辑:

This is my observable:
const interval$ = Observable.interval(120000).startWith(0);

我需要映射到这个 observable 并且只有在服务调用的返回不等于 1 时才让它处理:

documentRepository.getProcedureLock().then(data => {
                if (data !== null && data !=== '1') {

我尝试了很多事情都没有成功...处理我的间隔的逻辑是一个 .mergeMap,我没有足够的经验...你们可以帮忙吗?

【问题讨论】:

  • 哪个应该先运行?间隔还是api?
  • Observable.defer(() => documentRepository.getProcedureLock()).filter(data => data !== null && data !== '1').mergeMapTo(interval$)
  • api 返回一个标志,指示 observable 是否应该运行。

标签: merge rxjs reactive-programming angular2-observables


【解决方案1】:

看看是不是你要找的

Rx.Observable.fromPromise(documentRepository.getProcedureLock()).flatMap(data 
=> {
            if (data !== null && data !=== '1') return interval$
// i assume you want data if condition not met
return Rx.Observable.of(data)
}).subscribe(console.log)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-07
    • 2021-11-30
    相关资源
    最近更新 更多