【问题标题】:Angular 6 forkJoin not returning the dataAngular 6 forkJoin 不返回数据
【发布时间】:2018-12-08 09:05:49
【问题描述】:

我正在尝试使用 for 循环发出多个请求,然后使用 forkJoin 一次获取所有数据。

为了获取数据,我在我的服务组件中创建了一个函数,然后在调用该函数后在 for 循环内部订阅它,然后将数据推送到临时变量中。之后,当 for 循环完成时,我期待 forkJoin 订阅并返回值。

代码:

const observables = [];
for (let i = 0; i < this.originalData.length; i++) {
       this.dashboardService.getDetails(this.id1[i], this.id2[i]).subscribe(data => {
           observables.push(data);
       });
}
forkJoin(observables).subscribe(dataGroup => {
    console.log(dataGroup);
});

如果我在检查元素中检查我的网络,那么我可以看到它正在请求这些 url,并且响应状态为 200,但在控制台中我没有看到任何错误,但同时 forkJoin subscribe 没有输出. 我是新手,所以我可能没有正确理解如何使用 forkJoin。

我也在使用 rxjs": "^6.0.0",

【问题讨论】:

    标签: angular rxjs


    【解决方案1】:

    首先创建 observables 数组,然后将这些 observables 提供给forkJoin

    const observables = [];
    for (let i = 0; i < this.originalData.length; i++) {
          observables.push( this.dashboardService.getDetails(this.id1[i], this.id2[i])
           };
    
    forkJoin(...observables).subscribe(dataGroup => {
        console.log(dataGroup);
    });
    

    【讨论】:

    • 谢谢,这就是解决方案。所以我不需要订阅for循环,以后会接受它
    • @sive636,你不需要传播运算符,不需要 forkJoin(...observables),只需 forkJoin(observables)
    • @Eliseo 是的,你是对的。 forkJoin 接受单个参数以及数组。
    • @siva636,observables 已经是一个数组了,如果你写 forkJoin(...observables) 你是在复制数组并创建 forkJoin,这是没有必要的
    猜你喜欢
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 2017-12-09
    相关资源
    最近更新 更多