1

Требуется при подгрузке компонента TaskMainComponent загрузить из базы значение переменной tasksView, и на основании того, какое она приняла значение, выстраивать страницу дальше. Как я понимаю, для этого нужно использовать синхронный запрос, но нигде не могу найти, как именно это сделать.

На данный момент значение переменной загружается следующим образом:

task-main.component.ts

ngOnInit() { 
this.getTasksView(); 

if (this.tasksView == 'table') { 
this.getTasks(); 
console.log('table'); 
} 
else if (this.tasksView == 'list') { 
this.router.navigate(['/tasks', 'list']); 
console.log('list'); 
} 
}

getTasksView(): void {
    this.tasksService.getTasksView().then(tasksView => this.tasksView = tasksView);
    console.log(this.tasksView);
}

tasks.service.ts

getTasksView(): Promise<string> {
    return this.http.get(this.tasksViewUrl)
        .toPromise()
        .then(response => response.json().data as string)
        .catch(this.handleError);
}

И конечно, страница не ждет, когда же сервер ответит, а идет дальше, переменная оказывается не определена. Как это поправить? В ангуляре новичок.

  • Как я понимаю, для этого нужно использовать синхронный запрос, - ты не правильно понимаешь – Grundy Dec 26 '16 at 09:37
  • Я в onInit вызываю функцию, которая подгружает значение из базы. Она "обещает вернуть результат" и процесс идет дальше не останавливаясь. Когда сервер ответил, уже поздно – Евгений Dec 26 '16 at 09:40
  • так и должно быть. Что именно тебе нужно от ответа от сервера? как ты его используешь? – Grundy Dec 26 '16 at 09:42
  • Сейчас у меня запрос асинхронный. Запросил и пошел выполняться дальше. Мне надо, чтобы выполнение скрипта остановилось, пока серв не ответит. – Евгений Dec 26 '16 at 09:43
  • Ты не прав, тебе не надо, чтобы выполнение скрипта останавливалось. – Grundy Dec 26 '16 at 09:45
  • Именно это мне и надо, я так и сказал – Евгений Dec 26 '16 at 09:46
  • Запросы бывают синхронные, когда клиент запросил что-то у сервера и ждет ответа. И асинхронные, когда запросил и не ждет, а идет дальше. Когда придет ответ, ему без разницы. Я прав? – Евгений Dec 26 '16 at 09:47

0 Answers0