我正在使用Angular和RxJS編寫項目。我實現了注射類從JSON這樣的檢索數據:在Angular中的異步函數返回
import {Injectable, Inject} from '@angular/core';
import {Http} from '@angular/http';
import 'rxjs/add/operator/map';
import {Student} from './student.data';
@Injectable()
export class RosterService {
private students : Student[];
constructor(@Inject(Http) private http:Http){}
private getStudents(){
this.http.get('/JSON/students.json')
.map(data => data.json().students)
.subscribe(data => this.students = data);
}
public getRoster() {
this.getStudents();
return this.students;
}
}
後我注入RosterService到AppComponent的構造(包括成@Component作爲供應商):
export class AppComponent {
public students : Student[];
constructor(private _rosterService : RosterService) {
this.students = _rosterService.getRoster();
}
}
但是當我打電話getRoaster()方法,它不會等到getStudents(異步獲取調用)被執行。在結果我得到未定義的值。
我該如何處理?感謝您的迴應。
擴展我的問題裏面。這是不一樣的。 –
完全一樣。你剛剛添加了幾個圖層。你希望getRoster同步運行getStudents(IOW,在返回this.students之前完成)。重複討論如何構建您的代碼來實現這一目標。 –