2017-06-17 12 views
0

サービスでgetCompletedExams関数を実行し、すべてのデータをenrolled_exams配列に戻したいのですが、最初にnull値がenrolled_examに設定され、getCompletedExamsが実行されます。私はAngularが非同期であることを知っているので、これは起こり得るが、私はそれを解決する方法を知らない。コードはここに添付されています。 データがangular2で渡される前に関数が確実に実行されるようにするにはどうすればよいですか?

private setMyEnrolledExams() { 

this.homeTabService.getCompletedExams(this.studentId).subscribe(result => { 
    console.log(result); 
    this.enrolled_exams = result["response"]; 
    console.log("this "+this.enrolled_exams); 
    this.setPage(1); 
});} 

私はこのような何かを試してみました:

private setEnrolledExams() 
    { 
    this.homeTabService.getCompletedExams(this.studentId).subscribe(result => { 
     console.log(result); 
     this.enrolled_array = result["response"]; 
     console.log("this "+this.enrolled_exams); 
     this.setPage(1); 
    }); 
    } 
private setMyEnrolledExams() { 


    this.enrolled_exams = this.enrolled_array; 

} 

しかし、それはまだ機能が最初に実行し、null値を出力し、その後、配列が実際の値がロードされているのと同じことをやって。あなた `結果[ '応答']` `null`なのでを返す場合

private setMyEnrolledExams() { 

if(this.homeTabService.getCompletedExams(this.studentId).subscribe(result=>{ 
    if(this.enrolled_exams != null) 
    { 
     this.enrolled_exams = result["response"]; 
     this.setPage(1); 

    } 

    })) 
{ 

} 
} 
+0

はあなたが点検した: – Abrar

+0

デバッグの目的で追加したオブジェクトの配列を返します。 – kingforever

+0

'result ['response']'がオブジェクトの配列を返している場合、 'this.enrolled_exams'に代入するので問題はありません。 – Abrar

答えて

0

は、次のコードを使用してデータを得ましたか。 `this.enrolled_exams`は配列なので、なぜそれを` console.log(this "+ this.enrolled_exams)`の文字列に連結していますか?
関連する問題