Я новичок в Angular2 (и особенно в библиотеке RxJs) и укладывается на следующий шаг. Мой веб-сайт начинается со страницы регистрации. И после завершения регистрационной формы у меня есть использование метода register.auth.ts метода 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')
}
И я получаю ответ вроде этого
Я читал некоторые вещи о flatMap
методе в RxJs документации и утверждал, что альтернатива по умолчанию Promise
метод, then()
- но я не смог создать рабочий экземпляр кода, который реализует acutally flatMap
метод для моего случая
Поэтому возникает вопрос: как я могу достичь результата, поэтому появляется сообщение "ПОСЛЕ СЕРВЕРНОГО РЕАГИРОВАНИЯ" ПОСЛЕ ответа сервера? (не раньше, как упоминалось на предыдущем снимке экрана)
Вы должны дождаться завершения асинхронной задачи. Переместите этот 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')
}