我正在使用角度2和离子2.我正在调用一个完全没有返回数据的api,它启动另一项任务。如何在进入下一步之前完成通话。
服务
@Injectable()
export class AbsconderService {
constructor(public http: Http) {
console.log('Hello AbsconderService Provider');
}
getAbsconders() {
var url = 'http://someservice/admin_backend/public/Api_abscounders';
var response = this.http.get(url).map(res => res.json());
return response;
}
}
控制器中的
getData() {
this.absService.getAbsconders()
.subscribe(data => {
this.Records = data;
console.log(this.Records.data);
})
}
ionViewDidLoad() {
console.log('ionViewDidLoad Absconders');
this.Records = this.getData();
this.setFilteredItems(); // before above call finishes, this run in between and then again this.getData() is filling this.Records
})
}
答案 0 :(得分:2)
如果可能,请将代码移至subscribe中:
getData() {
this.absService.getAbsconders()
.subscribe(data => {
this.Records = data;
console.log(this.Records.data);
this.setFilteredItems(); //<- Moved it here.
})
}
这样在调用完成之前它就不会执行。
答案 1 :(得分:0)
这看起来有点短
var response = this.http.get(url).map(res => res.json());
this.http.get(url)
可能是异步调用。在这种情况下,您可能需要.then
或回调才能通过map
。