subscribe 方法 return 完成后是列表吗?

Does the subscribe method return a list after completion?

paraBirims: ParaBirimi[];
Get_All(adres: any): Observable < T[] > {
    return this.http.get < T[] > (this.base + "/" + adres);
}
getParaBirims(): ParaBirimi[] {
    this.genericParaBirim?.Get_All("ParaBirimis/Generic_Method").subscribe({
        next: (data) => {
            this.paraBirims = data
        },
        error: (err) => {},
        complete: () => {}
    });
}

我希望它在上面的代码 (getParaBirims) 中给我列表 return。我该怎么写?

this.paraBirims = getParaBirims();

您的 getParaBirims() 函数应该 return 一个订阅,并且您应该通过在您的服务 and/or 组件中或通过 async 管道订阅它来使用该订阅。

我建议使用 environment.ts 文件来定义您的 URL 前缀。这样您就可以根据应用的环境 运行 更改它们。

正如dopoto所说,最好在组件中简单地定义Observable并订阅它。我们可以从您的代码中删除大量样板文件并执行以下操作。

public paraBirims$: Observable<ParaBirimi[]>;

constructor(private http:HttpClient){
  this.paraBirims$ = this.http
   .get<ParaBirimi[]>(`${environment.url}/ParaBirimis/Generic_Method`);
}

然后在你的组件的 TS 文件中:

this.paraBirims$ = this.service.paraBirims$;

最后在您组件的 HTML 模板中:

<ul>
  <li *ngFor="let paraBirim of paraBirims$ | async">
    <!-- do whatever with paraBirim -->
  </li>
<ul>

async 管道将根据组件的生命周期自动处理订阅和取消订阅。

如果你想打电话给this.paraBirims = this.getParaBirims(); 你应该让你的方法 return 成为列表,然后将它分配给你在 ngOnInit 钩子中的变量:

//changes in the method 
getParaBirims(): ParaBirimi[] {
    this.genericParaBirim?.Get_All("ParaBirimis/Generic_Method").subscribe(data => {
             return data;
        });
}

//here call the method in ngOnInit()
ngOnInit() {
   this.paraBirims = this.getParaBirims();
}

或者简单地使方法return无效:

 getParaBirims():void

然后在ngOnInit()中调用

ngOnInit() {
   this.getParaBirims();
}