首页 > 解决方案 > 从 http.get 获取数据并将其影响到对象

问题描述

当我运行这段代码时,我得到了我的 deciplines 数组充满了数据

 onGetDescs(descipline:string){
    let rep  =this.http.get("http://data");
    let result: any;
    rep.subscribe( data => {
      this.desciplines = data as Descipline[];
        result =  this.desciplines.filter(function(d) {
        return d.name === descipline;
      });
      this.desciplines = result as Descipline[];
      console.log(this.desciplines);
    });  

    
     return this.desciplines;
  }

但是当我跑步时,我想使用它或只是这样做

  onGetDescs(descipline:string){
    let rep  =this.http.get("http://45.80.149.82:8080/ctp-api/api/disciplines");
    let result: any;
    rep.subscribe( data => {
      this.desciplines = data as Descipline[];
      result =  this.desciplines.filter(function(d) {
      return d.nom === descipline;
      });
      this.desciplines = result as Descipline[];
    });  

    console.log(this.desciplines);

     return this.desciplines;
  }

我得到一个空数组

我真的需要知道发生了什么 ps:我是 Angular 新手

标签: angulartypescriptionic-framework

解决方案


在第一个示例中,您在 api 调用发回数据后打印数据。(异步操作后)

但在第二种情况下,您在调用 api 之后打印数据。此时 api 还没有发回数据,你将有一个空数组。

我记得 js 内容在单个线程上运行(很高兴是错误的),所以 API 响应(内部内容.subscribe(...)的执行)将在onGetDescs.


推荐阅读