2017-06-17 109 views
0

我想先在服務上運行函數getCompletedExams,並將所有數據返回給enrolled_exams數組,但是發生了什麼是首先將空值設置到了註冊的數據文件中,然後運行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; 

} 

但它仍然做着同樣的事情在函數執行第一和打印空值,然後將數組加載與真實值。

+0

有你,如果你的檢查結果'[ '響應']''返回null'?由於'this.enrolled_exams'是一個數組,爲什麼要用'console.log(「this」+ this.enrolled_exams)''中的字符串連接它呢? – Abrar

+0

它正在返回一個我想要的對象數組和我爲了調試目的而添加的「this」。 – kingforever

+0

如果'result ['response']'返回一個對象數組,那麼應該沒有問題,因爲您將它分配給'this.enrolled_exams'。 – Abrar

回答

0

得到使用下面的代碼數據:

private setMyEnrolledExams() { 

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

    } 

    })) 
{ 

} 
} 
相關問題