2017-02-24 132 views
0

我想在網頁Oninit後得到一個值,並且有我的代碼。從服務器獲取數據後的回調函數

ngOnInit() { 
    this.getVideo(this.getScore); 
} 

getVideo(callback) { 
    this.dataService.getVideo(this.videoID).subscribe(
     data => this.video = data, 
     error => console.log(error) 
    ); 
    if (typeof callback === 'function') 
     callback(); 
} 

getScore() { 
    console.log(this.video['Score']); 
} 

我可以在頁面上呈現我的視頻分數,如果沒有任何錯誤,但在回調使它錯誤。

caused by: Cannot read property 'video' of undefined 

如何從服務器獲取數據後獲取值?謝謝!

回答

2

造成的:無法讀取的不確定

這是因爲DataService在的發生是財產「視頻」在異步中執行,並且在服務返回數據之前,您的callback()函數已經執行。

嘗試在訂閱的數據函數內調用您的回調函數()。

getVideo(callback) { 
    this.dataService.getVideo(this.videoID).subscribe(
     data => { 
      this.video = data; 
      if (typeof callback === 'function') 
       callback(); 
     }, 
     error => console.log(error) 
); 
} 
+1

謝謝,這正是我需要的! – PaulHuang

0

我認爲這是因爲"this"背景下,試試這個:

ngOnInit() { 
    this.getVideo(this.getScore.bind(this)); 
} 
+0

我以另一種方式解決問題,但謝謝:) – PaulHuang

相關問題