2015-12-31 2 views
1

Я пытаюсь присвоить значение из обещания переменной (свойству). Я могу получить значение из console.log. Но когда я пытаюсь назначить его «этому», это не сработает. см мой код ниже:Promises Angular2 ngOnInit this

export class AppComponent implements OnInit { 

    graphData:any; 


    constructor(public _RelaticsService:RelaticsService, public _RelaticsDataTransformService:RelaticsDataTransformService) { 


    } 

    ngOnInit() { 

     this._RelaticsService.GetData('persons', '37035202-abf8-4822-b8a5-b492c97a4c83', '123456') 
      .then((val) => 
       this._RelaticsDataTransformService.ObjectTreeTransformation(val) 
      ) 
      .then((val) => { 
       console.log(val); // logs object 
       this.graphData = val; // assigns object to this.graphdata 
       console.log(this.graphData); // logs object 
      }) 
      .catch((err) => console.log("rejected:", err)); 

     console.log(this.graphData) // logs undefined?? 

    } 


} 

ответ

4
console.log(this.graphData) // logs undefined?? 

выполняется перед

this._RelaticsService.GetData('persons', '37035202-abf8-4822-b8a5-b492c97a4c83', '123456') 
     .then((val) => 
      this._RelaticsDataTransformService.ObjectTreeTransformation(val) 
     ) 
     .then((val) => { 
      console.log(val); // logs object 
      this.graphData = val; // assigns object to this.graphdata 
      console.log(this.graphData); // logs object 
     }) 
     .catch((err) => console.log("rejected:", err)); 

Это

this._RelaticsDataTransformService.ObjectTreeTransformation(val) 
     ) 
     .then(/* passed code */) 

только графики пропущенный кода для последующего выполнения (когда вызов возвращается) и продолжается с выполнение следующих статусов.

Так что ваш код работает нормально, только проверка недействительна.