Задать вопрос
@asdqwee
Front-end developer

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

addPost() {
    this.openDialog().subscribe(formData => {
      if (formData) {
        this.postsService.add(formData).subscribe((res: Post) => {
          this.posts.unshift(res);
        });
      }
    });
  }
  • Вопрос задан
  • 338 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Javascript.ru
    Курс по Angular
    6 недель
    Далее
  • Skillfactory
    Профессия Frontend-разработчик PRO
    14 месяцев
    Далее
  • Компьютерная академия «TOP»
    Frontend разработка
    12 месяцев
    Далее
Решения вопроса 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);
   }
  }
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы