我知道有类似的线程,但没有一个为我的问题提供合适的解决方案。
Pre: 我在服务器端和客户端同时导航。这意味着使用 routerLink 和任何被调用的路由在前端的每个导航都伴随着对服务器的 HTTP 请求调用。
情况:我正在打开一个对话框来显示一个表单来创建一个position
. 为此,position
我需要显示elements
我从 API 加载的列表。对于每个element
我需要加载一个额外的thumbnail
. 所以我需要一个 API 调用来获取 86 elements
,然后是 86 请求来获取thumbnail
s。我将这些元素保存在服务中以防止再次加载它们。因此,我在elements
加载它们之前检查是否已经存在。当我打开对话框时,API 调用就开始了。
getElementsWithThumbnails() {
if (this.elementsSource.value.length === 0) {
this.apiService.getElements().subscribe(
(next) => {
this.elementsSource.next(next);
this.elementsSource.value.forEach((epl, index) => {
const format = 'JPG';
this.apiService.getThumbnail(epl.id, format, '400', '400', 'true').subscribe(
(blob) => {
epl.thumbnail = blob;
}
);
});
}
);
}
}
缩略图请求方法:
getThumbnail(
elementId: string, format: string, width: string,
height: string, sameratio: string
): Observable<SafeUrl> {
return this.httpClient.get(
this.apiUrl +
`/elements/${elementId}/thumbnail?format=${format}&width=${width}&height=${height}&sameratio=${sameratio}`
, {
responseType: 'blob'
}).pipe(
map(res => {
return this.blobToSanitizedUrl(res);
})
);
}
问题:如果用户决定取消表单并想要向前/向后导航 - 他不能,因为它navigation request
位于队列的末尾。
是否有任何方法可以将较低的thumbnail
呼叫优先级设置为在较小的负载上处理?
提前致谢。