Angular 2 Rxjs создает действие после ответа сервера - PullRequest
0 голосов
/ 07 июня 2018

Я новичок в Angular2 (и особенно в библиотеке RxJs) и перешёл на следующий шаг.Мой веб-сайт начинается со страницы регистрации.И после заполнения формы регистра у меня есть базовый service.auth.ts метод использования регистра

     registerUser(){
        this.authService.registerUser(this.registrationForm.value)
        .subscribe((data) => {
           console.log(data);
        })
        //this line should apear after server response from backend
        console.log('AFTER SERVER RESPONSE')
        }

И я получаю ответ, подобный этому

enter image description here

Я прочитал кое-что о методе flatMap в документации RxJs, и, как утверждается, он является альтернативой методу Promise по умолчанию then() - но мне не удалось создать рабочий экземпляр кода, который фактически реализует метод flatMap для моегоcase

Итак, вопрос: Как мне добиться результата, чтобы после ответа сервера появилось сообщение «AFTER SERVER RESPONSE»? (не так, как упоминалось на предыдущем снимке экрана)

1 Ответ

0 голосов
/ 07 июня 2018

Вам следует дождаться завершения асинхронной задачи.Переместите этот console.log('AFTER SERVER RESPONSE') в свой блок subscribe.

registerUser() {
        this.authService.registerUser(this.registrationForm.value)
        .subscribe((data) => {
           console.log(data);
           //this line should apear after server response from backend
           console.log('AFTER SERVER RESPONSE')
        });

      // anything written over here will execute before `registerUser()` returns data
     console.log('THIS WILL PRINT BEFORE SERVER RESPONSE')
}
...