javascript - 如何使用将 Observable 映射到值是可观察对象的对象的函数来映射 Observable?

标签 javascript rxjs observable

假设我有一个如下所示的函数:

const mapObservableToObject = o$ => ({
  counter: o$.pipe(
    pluck('values', 'counter')
  )
  username: o$.pipe(
    pluck('user', 'username'),
    map(sanitizeUsername)
  )
  input: unrelatedObservable$.pipe(
    pluck('target', 'value'),
    distinct(),
    auditTime(300)
  )
})

我如何使用现有的可观察对象和这样的函数创建新的可观察对象?新的 observable 应该发出形状为 { counter, username, input } 的值,其中包含各自 observable 的最新值,默认为 null 当它没有收到值呢。 (但可能是可选的默认值?)

最佳答案

尝试

const mapObservableToObject = o$ => ({
  counter: o$.pipe(
    pluck('values', 'counter'),
    startWith(null)
  )
  username: o$.pipe(
    pluck('user', 'username'),
    map(sanitizeUsername),
    startWith(null)
  )
  input: unrelatedObservable$.pipe(
    pluck('target', 'value'),
    distinct(),
    auditTime(300),
    startWith(null)
  )
})

const { counter, username, input } = mapObservableToObject(obs$);
combineLatest(counter, username, input).subscribe(v => console.log(v));

关于javascript - 如何使用将 Observable 映射到值是可观察对象的对象的函数来映射 Observable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51913551/

相关文章:

javascript - typescript 错误 : Property '0' is missing in type

javascript - Angular 2 如何在登录浏览器控制台之前处理 404?

angular - setInterval vs Observable的timer方法,哪个更适合创建timer

c# - 如何在 Razor 中修复此 "syntax error"?

javascript - 类型错误 : GMaps is not a constructor

javascript - RxJS 监听事件但稍后附加事件监听器

Angular RxJs 在循环数组期间升级

javascript - 如何从 Backbone View 中创建多个跨度

javascript - 如何通过模拟选择器和/或 redux 存储来编写 Redux Saga 测试

rxjs - ReactiveX 运算符 - 去抖动,但先触发,然后过滤其他运算符