RxJs 如何取多次点击最后一个事件?
RxJs how to take multiple click last event?
如何使用 RxJS 获取最后一次点击事件以防止多次 API 调用每个按钮点击?
我有一个机制,其中存在下一个按钮,它会增加一个 clientSlot #。
如果用户以正常速度点击下一步按钮,则依次获取下一个客户端槽数据。但是,如果用户多次快速单击,我不想只显示最后一个,因为调用 API 会浪费时间。因为用户无法跟随屏幕上的数据变化,我想根据最后增加的 clientSlot # 显示最新的点击触发数据。
使用 debouncTime 我可以实现它,但是不使用 debouncTime 可以实现吗?
提前致谢。
让它使用 switchMap - 它会取消不必要的 API 请求
示例:
const yourHttpRequest$ = new Subject<InputApiData>();
const yourHttpResponse$: Observable<ClientData> = yourHttpRequest$.pipe(switchMap(
inputApiData => this.httpService.getClientData(inputApiData)));
yourHttpResponse$.subscribe(clientData => {
// your logic to execute after API call was done
});
yourHttpRequest$.next(inputApiData); // calling API
您有两个按钮,它们会触发 API 调用。您可以在点击事件处理程序中放置 API 调用。
如何使用 RxJS 获取最后一次点击事件以防止多次 API 调用每个按钮点击? 我有一个机制,其中存在下一个按钮,它会增加一个 clientSlot #。 如果用户以正常速度点击下一步按钮,则依次获取下一个客户端槽数据。但是,如果用户多次快速单击,我不想只显示最后一个,因为调用 API 会浪费时间。因为用户无法跟随屏幕上的数据变化,我想根据最后增加的 clientSlot # 显示最新的点击触发数据。
使用 debouncTime 我可以实现它,但是不使用 debouncTime 可以实现吗?
提前致谢。
让它使用 switchMap - 它会取消不必要的 API 请求
示例:
const yourHttpRequest$ = new Subject<InputApiData>();
const yourHttpResponse$: Observable<ClientData> = yourHttpRequest$.pipe(switchMap(
inputApiData => this.httpService.getClientData(inputApiData)));
yourHttpResponse$.subscribe(clientData => {
// your logic to execute after API call was done
});
yourHttpRequest$.next(inputApiData); // calling API
您有两个按钮,它们会触发 API 调用。您可以在点击事件处理程序中放置 API 调用。