2017-02-24 17 views
0

Webページ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 

サーバーからデータを取得した後に値を取得するにはどうすればよいですか?ありがとう!引き起こさ

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

答えて

2

:理由のDataServiceでこれが起こっている未定義

のプロパティを読み取ることができません「ビデオ」さ

+1

ありがとう、それは私が必要とするものです! – PaulHuang

0

私はこれを試してみてください、それが原因で"this"コンテキストのだと思います非同期で実行され、サービスがデータを返す前にcallback()関数がすでに実行されています。

subscribeのデータ関数内でcallback()を呼び出してみてください。

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

私は問題を別の方法で解決しますが、ありがとうございます。 – PaulHuang

関連する問題