Возвращаемое значение не определено внутри подписки в угловых js после извлечения значений из REST API - PullRequest
0 голосов
/ 13 февраля 2019

Это данные, возвращаемые REST API

{

    "clo_change": 91.0,
    "vam_change": 72.76,
    "sla_change": 94.0,
    "feedback_change": 87,
    "so_change": 69.0,
    "cost": 87277.75

}

. В моем файле service.ts я делаю запрос на URL

public getNewPlanData(): Observable<any>{
console.log("I am here createNewPlanModel");
    return this.http.get('http://localhost:8000/newplandata/')
        .map((response: Response) => {
         console.log("I am here createNewPlanModel2");
         return response.json()
        });
  }

Я подписываюсь на наблюдаемоев файле component.ts

this.mainService.getNewPlanData().subscribe(result =>{ 
      console.log("inside subscribe")
     this.newData=result;    
     console.log(this.newData)         
     }, error => console.log(error));  
    console.log("outside subscribe")

Когда я отлаживаю код в Chrome, при первом обращении к приложению не выполняется и

значение не определено и "извне подписка"печатается

, и во второй раз я получаю значения из REST API, и значения печатаются внутри цикла подписки, но он не подходит к следующему оператору console.log("outside subscribe"), вместо этого оношибка выдачи типа

Возвращаемое значение: не определено

и значения не используются для дальнейшей обработки.

Я хочу использовать this.newDataзначения вне цикла подписки для дальнейшей обработки.Пожалуйста, помогите мне, как решить эту проблему.

1 Ответ

0 голосов
/ 13 февраля 2019

В этой ситуации вы можете использовать тайм-аут, который может в некоторой степени помочь.

  setTimeout(() => {
      this.mainService.getNewPlanData().subscribe((result) => {
        console.log('inside subscribe');
        this.newData = result;
        console.log(this.newData);
      },
        (error) => {
          console.log(error);
        });
    }, 1000 );
    console.log('now I will have data '+this.newData);
...