Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 8 Http多个呼叫或流式传输_Angular_Angular8 - Fatal编程技术网

Angular 8 Http多个呼叫或流式传输

Angular 8 Http多个呼叫或流式传输,angular,angular8,Angular,Angular8,我使用Angular8,我的问题是:我有一个表,它向我的服务器发送请求以获取记录,此时服务器只需“从表中选择*并立即返回全部数据” 现在的问题是“表”非常大,加载表需要时间 我想第一次调用服务器并“从表限制1000中选择* 然后执行另一个调用并加载其余的数据。 但我无法找到只返回一个可观察到的结果并“流”出结果的可能性 表组件如下所示: this.apiService.loadTable().subscribe(data => { this.source.load(data) }) th

我使用Angular8,我的问题是:我有一个表,它向我的服务器发送请求以获取记录,此时服务器只需“从表中选择*并立即返回全部数据”

现在的问题是“表”非常大,加载表需要时间

我想第一次调用服务器并“从表限制1000中选择* 然后执行另一个调用并加载其余的数据。 但我无法找到只返回一个可观察到的结果并“流”出结果的可能性

表组件如下所示:

this.apiService.loadTable().subscribe(data => { this.source.load(data) })
this.apiService.loadTable(pageNumber, pageSize).subscribe(data => { this.source.load(data) })

// pageNumber is the actual number (initially 1)
// pageSize defines the amount of datasets you want to load. 
(其中this.source.load是ngx智能表的一个函数)

我希望loadTable函数在一个请求完成时更新数据。。 我怎样才能做到这一点? 我没有找到如何接受不同的http请求并在单个可观察对象上发出它们的结果


谢谢

通常情况下,您会使用一些分页逻辑来执行此类操作。 例如,可以这样工作:

this.apiService.loadTable().subscribe(data => { this.source.load(data) })
this.apiService.loadTable(pageNumber, pageSize).subscribe(data => { this.source.load(data) })

// pageNumber is the actual number (initially 1)
// pageSize defines the amount of datasets you want to load. 
然后,在您的服务和后端,您还必须实现该逻辑,以便仅检索某些数据

对于SQL实现,您可能希望在此处查看:


希望这会有所帮助。

将所有记录推送到客户端通常是个坏主意。最好将其与表示用户需要更多记录的某些用户操作联系起来,例如单击“更多”按钮、滚动到表格底部等

但是,如果必须,您可以在以前的订阅中始终“重新订阅”。在下面的代码中,如果服务器上有更多记录,loadData会调用自身:

...
loadData (pageNumber = 1, pageSize = 20) {
    this.apiService.loadTable(pageNumber, pageSize).subscribe(response => {
        this.source.load(response.data);
        if (pageNumber < response.totalPageCount) {
             loadData(pageNumber++, pageSize);
        }
    })
}
...
。。。
loadData(pageNumber=1,pageSize=20){
this.apiService.loadTable(pageNumber,pageSize).subscribe(响应=>{
this.source.load(response.data);
if(页码<响应.总页数){
loadData(pageNumber++,pageSize);
}
})
}
...
ngx智能表已经包含分页功能,所以我建议您坚持使用


其他人也建议使用WebSocket,但这有其自身的优点和缺点。

如果您希望在一个页面中显示整个数据,我建议您实现分页或虚拟滚动(无限滚动)。此外,您可能对搜索如何使用分页感兴趣?如果未加载数据,则表筛选器将无法正常工作