简体   繁体   English

如何用mergeMap或switchMap替换订阅?

[英]how to replace subscribe by mergeMap or switchMap?

I want to replace subscribe in subscribe by switchMap, i dont know how to do that.我想用switchMap替换订阅中的订阅,我不知道该怎么做。 I need 1 example, but i didn't find it on the Internet.我需要 1 个示例,但我没有在 Internet 上找到它。

dialogRef.afterClosed().pipe(filter(result => !!result)).subscribe(result => {
            result.owner = this.user.id;
            proj._newname = result.name;
            proj.name = result.name;
            this.projectService.updateProject(proj, result.name)
                .subscribe(project => {
                        const pw = new ProjectWorker({
                            approve: true,
                            worker: this.user.id,
                            project: project.id,
                            admin: true,
                            write: true
                        });
                        this.projectService.createProjectWorker(pw).subscribe(_ => {
                            this.getProjects();
                        });
                    },
                    err => {
                        this._snackbar.open('Project already exist', 'error', {
                            panelClass: 'snackbar-error'
                        })
                    });
            }
        );

Something like this:像这样的东西:

dialogRef.afterClosed().pipe(
  filter(result => !!result),
  switchMap((result) => {
    result.owner = this.user.id;
    proj._newname = result.name;
    proj.name = result.name;
    return this.projectService.updateProject(proj, result.name);
  }),
  switchMap((project) => {
    const pw = new ProjectWorker({
      approve: true,
      worker: this.user.id,
      project: project.id,
      admin: true,
      write: true
    });
    return this.projectService.createProjectWorker(pw);
  }),
).subscribe(
  res => this.getProjects(),
  err =>
    this._snackbar.open('Project already exist', 'error', {
      panelClass: 'snackbar-error'
    })
);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM