Ваш асинхронный метод будет работать в другом потоке - так что я думаю, что вы не получите возраст до завершения подписки, а остальная часть кода не ждет - вы можете переместить логику внутри подписки, как это
this.employeeService.getAge(this.employeeId).subscribe((data) => {
if(data >18) {
//some logic Code comes here
} else {
//some other logic Code comes here
}
});
Надеюсь, что это работает - счастливое кодирование:)
Обновление:
Вы можете использовать promise
, чтобы получить данные, попробуйте что-то вроде этого
GetAge() {
return new Promise(res => {
this.employeeService.getAge(this.employeeId).subscribe(data => {
res(data);
});
});
}
При чтении данных из обещания
SaveEmployee() {
let employeeAge= 0;
this.GetAge().then((res) => {
if(res >18) {
//some logic Code comes here
} else {
//some other logic Code comes here
}
});
}
В противном случае вы можете отправить данные в другую функцию и обработать там логику. Я не уверен, что это правильный путь, потому что вы оказались всоздание метода, который является надежным только для функции
GetAge() {
this.employeeService.getAge(this.employeeId).subscribe(data => {
SomeMethod(data);
});
}
Я думаю, обещание может помочь вам - Счастливое кодирование :)