Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rxjs 链内可观测,外可观测_Rxjs - Fatal编程技术网

Rxjs 链内可观测,外可观测

Rxjs 链内可观测,外可观测,rxjs,Rxjs,我有以下代码 //#region GET ALL ORGANIZATIONS @Effect() getOrganization$ = this.actions$.pipe( ofType<featureActions.GetOrganizationRequest>(featureActions.ActionTypes.GetOrganizationRequest), switchMap((action) => this.dataServ

我有以下代码

  //#region GET ALL ORGANIZATIONS
  @Effect()
  getOrganization$ = this.actions$.pipe(
    ofType<featureActions.GetOrganizationRequest>(featureActions.ActionTypes.GetOrganizationRequest),
    switchMap((action) =>
      this.dataService.getOrganization(action.payload.organizationId).pipe(
        concatMap(organization =>
          of(organization).pipe(
            map(organization => from(this.validateTokens(organization.access_token, organization.default_access_token)))
          )
        )
        ).pipe(
          switchMap(e => [])
        )
      )
    )
/#区域获取所有组织
@效果()
getOrganization$=此.actions$.pipe(
类型(featureActions.ActionTypes.GetOrganizationRequest),
开关映射((操作)=>
this.dataService.getOrganization(action.payload.organizationId).pipe(
concatMap(组织=>
(组织)的(
映射(organization=>from(this.validateTokens(organization.access\u令牌,organization.default\u access\u令牌)))
)
)
).烟斗(
开关映射(e=>[])
)
)
)
基本上我想做的是

  • 从=>this.dataService.getOrganization获取数据
  • 在=>this.validateTokens(organization.access\u token,organization.default\u access\u token)中使用此数据并返回一个值
  • 在最终的
    开关映射(e=>[])中同时使用1和2的数据

  • 问题是我找不到从1到3中获取数据的方法。。。。我总是只获取2的数据,首先检查开关运算符定义:

    在切换中,与合并不同,如果新的可观察对象开始发出值,我们将在订阅新的可观察对象之前取消订阅先前的可观察对象

    现在连接运算符定义:

    可观察到的连接就是关于可观察到的完成!我们获取第一个可观测值并使用其值,等待其完成,然后使用下一个可观测值,以此类推,直到所有可观测值完成

    和合并运算符定义:

    与concatMap不同,在mergeMap的情况下,我们不需要等到上一个内部观察对象完成后,才激活下一个内部观察对象

    这意味着使用MergeMap(与ConcatMap相反),几个内部观测值会随着时间重叠,并发出平行值,如红色大理石图所示

    您可以阅读有关合并地图的信息

    这个答案也可能对你有所帮助:


    this.validateTokens
    返回什么?只是一个带有一些值的对象
    this.postsService.getPostData(postId).switchMap(
      postData => this.getUserByPostData(postData).map(
        userByPostData => ({ postData, userByPostData })
      )
    ).subscribe(({ postData, userByPostData })=> console.log(postData, userByPostData));