//前面操作
//异步请求
//后面操作
请问在angular5中,类似这样的流程如何该等待异步请求执行完毕在执行后面的操作呢?
用回调, 以下伪代码
//前面操作
//异步请求
.success(回调(//后面操作))
如果是循环异步,可以用递归
//前面操作
递归函数 A(){
//异步请求
.success(回调(A()))
}
可以先封装一层http请求,例如 post(url, data = {}, headers = this.headers()) {
url = this.handle(url);
return this.http.post(url, data, { headers: headers })
.map(response => response.json())
.catch(error => this.errorNotice(error));
}
然后写服务或者直接引入 postSomething(params: any): Observable<any> {
const url = Constant.serverIp + Constant.api.someApi;
return this.DHttp.post(url, params).map(res => res);
}
最后订阅
this.postSomething(this.params).subscribe(res=>{},err=>{})
首先angular中的http.get()/post()返回类型是Observable<response>
, 不是promise
.
但是Observable是可以转换成promise的,所以这样就是使用async await
让代码看起来是同步的.
obsevable: Observable<Response> = this.http.get("url", {headers: headers});
async testObservable() {
//前面操作
.....
//异步请求
let response: Response = await this.obsevable.toPromise();
//后面操作
.....
}