我正在使用NgBlockUI和BlockUIHttpModule,并且在我正在处理的应用程序中将blockAllRequestsInProgress设置为true。通常,它工作正常,但在一页上,我使用concat映射执行一些操作,然后更新数据。第一个请求(更新)触发BlockUI正常,但第二个请求没有触发。否则,它将正确执行。对于用户来说,这只是一个小小的障碍,因为结果似乎在没有警告的情况下进行了更新。这是该函数的代码:
onUpdate(event: items[]) {
this.updateService.update(event).concatMap(
_ => this.seachService.search(this.cachedSearch)
).subscribe(
resp => this.handleResponse(resp),
err => this.handleError(err)
);
}
我尝试直接调用BlockUI,但还是没有运气。作为最后的选择,我将把整个事情都变成一个请求,但是我至少想了解为什么这不起作用。
这也发生在我身上。对于顺序的HTTP调用(通常带有await),会发生此问题,其中第二个请求未被ng-block-ui阻止。
作为修复,我将blockAllRequestsInProgress
设置为false
。行为是相同的,但是将其设置为false会产生更可预测的结果:
BlockUIHttpModule.forRoot({
blockAllRequestsInProgress: false,
requestFilters: [urlFilter]
}),
在撰写本文时,我也已将ng-block-ui更新为最新版本:
"ng-block-ui": "^2.1.8",