我正在使用带有离子 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
})
}
如果可能,请将代码移动到订阅中:
getData() {
this.absService.getAbsconders()
.subscribe(data => {
this.Records = data;
console.log(this.Records.data);
this.setFilteredItems(); //<- Moved it here.
})
}
这样,在调用完成之前,它不会执行。
这看起来有点短
var response = this.http.get(url).map(res => res.json());
this.http.get(url)
可能是异步调用。 在这种情况下,您可能需要.then
或回调才能将其通过map
。