首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否将Observable<boolean[]>拆分为Observable<boolean>[]?

是否将Observable<boolean[]>拆分为Observable<boolean>[]?
EN

Stack Overflow用户
提问于 2018-03-22 20:18:01
回答 1查看 109关注 0票数 0

在我的一个组件中,我有以下几个:

代码语言:javascript
复制
// this.can... are booleans
redux
  .watch(state => state.userInfo.access.current)
  .takeUntil(this.done)
  .subscribe(access =>
    [this.canPartners, this.canServices, this.canTens, this.canWorklist] =
    [EPermission.Partner, EPermission.Worklist, EPermission.Tens, EPermission.Worklist]
      .map(ii => access[ii] >= EAccess.Read));

我想知道怎样才能将可观察对象分解成这样的东西:

代码语言:javascript
复制
// this.can...$ are Observable<boolean>s
[this.canPartners$, this.canServices$, this.canTens$, this.canWorklist$] = redux
  .watch(ReduxGetters.userAccess)
  .takeUntil(this.done)
  .?mapSplit?(access => [EPermission.Partner, EPermission.Worklist, EPermission.Tens, EPermission.Worklist].map(ii => access[ii] >= EAccess.Read));

更新

我使用的是rxjs BTW,这意味着我受到那里提供的运算符的限制。我得到的最接近的结果如下:

代码语言:javascript
复制
const result$: Observable<Observable<boolean>[]> = redux
  .watch(ReduxGetters.userAccess)
  .takeUntil(this.done)
  .map(access =>
    [EPermission.Partner, EPermission.Worklist, EPermission.Tens, EPermission.Worklist]
      .map(ii => Observable.of(access[ii] >= EAccess.Read)));

...now我“只是”需要去掉可观察到的包装器...

EN

回答 1

Stack Overflow用户

发布于 2018-03-22 20:58:06

您可能想要尝试这样的操作

代码语言:javascript
复制
// this.can...$ are Observable<boolean>s
redux
  .watch(ReduxGetters.userAccess)
  .takeUntil(this.done)
  .reduce((accumulatorArray, current) => {
    accumulatorArray.push(current  >= EAccess.Read)
  }, new Array<boolean>())
  .submit(
    arrayOfBooleans => [this.canPartners$, this.canServices$, this.canTens$, this.canWorklist$] = arrayOfBooleans
  )

我不能尝试这个,但也许能行得通

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49428519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档