如何在移动到 Angular 2 中的另一个任务之前完成 API 调用



我正在使用带有离子 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

相关内容

  • 没有找到相关文章

最新更新