Angular6 ожидание HTTP-вызова - PullRequest
0 голосов
/ 11 июля 2019

Я работаю над проектом в Angular6, где мне нужно сделать HTTP-вызов для получения данных JSON. Вызов правильный (я проверил вывод в консоли). Проблема в том, что моя функция в Service возвращает «неопределенное» до завершения HTTP-вызова. Но возвращается undefined, и все остальные мои функции в компоненте выдают мне ошибку.

menuService.ts

getCall(url, options) {
    this.http.get(url, options).subscribe(
                (data:any) => {
                    if(data){
                        console.log(data);
                        return data;
                    },
                error => {
                    return [];
                }
            );
}

menu.ts

 getCall(url, options) {
     let result: any;
     result = this.menuSvc.getCall(url, options);
     let l:number = result.length;    //error is thrown here, "no length property for 'undefined'
     return result;
 }

Я искал в Интернете и нашел решения, такие как Promise (); но я не совсем понял, как его применять. Было бы здорово, если бы кто-то мог помочь. Спасибо!

1 Ответ

1 голос
/ 11 июля 2019

Вы ничего не возвращаете.При обслуживании он должен возвращать наблюдаемую, которая должна быть подписана вызывающим абонентом.

Измените свой код следующим образом:

menuService.ts

getCall(url, options) {
   return this.http.get(url, options);
}

menu.ts

getCall(url, options) {
     let result: any;
     this.menuSvc.getCall(url, options)
         .subscribe(result => {
           console.log(result);
           //do whatever you want to do with result.
         });                       
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...