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);
}
}))
{
}
}
はあなたが点検した: – Abrar
デバッグの目的で追加したオブジェクトの配列を返します。 – kingforever
'result ['response']'がオブジェクトの配列を返している場合、 'this.enrolled_exams'に代入するので問題はありません。 – Abrar