@asdqwee
Front-end developer

Как правильно сделать subscribe внутри другого subscribe?

addPost() {
    this.openDialog().subscribe(formData => {
      if (formData) {
        this.postsService.add(formData).subscribe((res: Post) => {
          this.posts.unshift(res);
        });
      }
    });
  }
  • Вопрос задан
  • 315 просмотров
Решения вопроса 1
dasha_programmist
@dasha_programmist
ex Software Engineer at Reddit TS/React/GraphQL/Go
не надо так делать, используй flatMap
this
  .openDialog()
  .flatMap(fd=>{
     return !fd?Observable.Empty():this.postsService.add(fd).first();
  })
  .subscribe(post=>{
    this.posts.unshift(post);
  });
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@kimisu
можно вот так
async addPost() {
   const formData = await this.openDialog().toPromise();
   if (formData) {
    const res = await this.postsService.add(formData).toPromise();
     this.posts.unshift(res);
   }
  }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы