鍍金池/ 問答/HTML5/ angular5如何執(zhí)行類似同步的http請求?

angular5如何執(zhí)行類似同步的http請求?

//前面操作

//異步請求

//后面操作

請問在angular5中,類似這樣的流程如何該等待異步請求執(zhí)行完畢在執(zhí)行后面的操作呢?

回答
編輯回答
鐧簞噯

clipboard.png

2017年10月2日 23:07
編輯回答
懷中人

angular中的http請求是promise的,你可以把操作和異步請求串起來

2018年2月15日 13:53
編輯回答
扯不斷

可以先封裝一層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));

}
然后寫服務(wù)或者直接引入 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=>{})

2017年1月31日 14:02
編輯回答
逗婦惱

用回調(diào), 以下偽代碼

//前面操作

//異步請求
.success(回調(diào)(//后面操作))

如果是循環(huán)異步,可以用遞歸

//前面操作

遞歸函數(shù) A(){
    //異步請求
    .success(回調(diào)(A()))
}
2017年8月29日 19:51
編輯回答
互擼娃

首先angular中的http.get()/post()返回類型是Observable<response>, 不是promise.

但是Observable是可以轉(zhuǎn)換成promise的,所以這樣就是使用async await讓代碼看起來是同步的.

  obsevable: Observable<Response> = this.http.get("url", {headers: headers});
  async testObservable() {
    //前面操作
    .....
    //異步請求
    let response: Response = await this.obsevable.toPromise();
    //后面操作
    .....
  }
2018年1月12日 11:42