2017-06-17 2 views
0

Ich möchte zuerst die Funktion GetCompletedExams auf dem Dienst ausführen und alle Daten an immatriked_exams -Array zurückgeben, aber was passiert, ist zuerst Null-Werte in die immatrikulierte_exam gesetzt werden und dann die GetCompletedExams ausgeführt wird. Ich weiß, dass Angular asynchron ist, also könnte das passieren, aber ich weiß nicht, wie ich es lösen soll. Der Code ist hier angehängt.Wie stelle ich sicher, dass die Funktion ausgeführt wird, bevor Daten in angular2 übergeben werden?

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); 
});} 

Ich habe versucht, so etwas wie diese:

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; 

} 

Aber es immer noch das gleiche tut die Funktion ausführt erste und druckt den Wert Null und dann wird das Array mit den realen Werten geladen.

+0

Haben Sie überprüft, ob Ihr 'Ergebnis [ 'response']' 'Rückkehr null'? Da "this.enrolled_exams" ein Array ist, warum verketten Sie es mit einem String in der 'console.log (" this "+ this.enrolled_exams)'? – Abrar

+0

Es gibt ein Array von Objekten, die ich will, und "this", die ich zum Debuggen hinzugefügt habe. – kingforever

+0

Wenn das 'result ['response']' ein Array von Objekten zurückgibt, sollte es kein Problem geben, da Sie es 'this.enrolled_exams' zuweisen. – Abrar

Antwort

0

Haben die Daten folgenden Code:

private setMyEnrolledExams() { 

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

    } 

    })) 
{ 

} 
} 
Verwandte Themen