angular5如何执行类似同步的http请求?

发布于 2022-09-07 11:29:26 字数 94 浏览 16 评论 0

//前面操作

//异步请求

//后面操作

请问在angular5中,类似这样的流程如何该等待异步请求执行完毕在执行后面的操作呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

╰つ倒转 2022-09-14 11:29:26

angular中的http请求是promise的,你可以把操作和异步请求串起来

む无字情书 2022-09-14 11:29:26

用回调, 以下伪代码

//前面操作

//异步请求
.success(回调(//后面操作))

如果是循环异步,可以用递归

//前面操作

递归函数 A(){
    //异步请求
    .success(回调(A()))
}
老街孤人 2022-09-14 11:29:26

可以先封装一层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=>{})

温柔少女心 2022-09-14 11:29:26

首先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();
    //后面操作
    .....
  }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文