问题描述
期望的行为: 当与滑块交互并触发 onChanged 时,应向后端发出请求以更新值。但是,需要 5 秒的谴责时间,不要太频繁地击中端点。
当前行为: 只有一些 onChanged 事件被谴责。例如,如果有 68 个 onChanged 触发器,则有 15 次调用后端。所有触发器都在一秒内(1
const int CLIP_UPDATE_DEBOUNCE_DURATION_SECONDS = 5;
final PublishSubject<IntRangeValues> rangeValuesPublishSubject = PublishSubject<IntRangeValues>();
ClipCubit(this.clipEntity,this._userContentService) : super(RangeValuesUpdated(RangeValues(clipEntity.clipStartTimestamp,clipEntity.clipEndTimestamp))) {
rangeValuesPublishSubject.debounceTime(Duration(seconds: CLIP_UPDATE_DEBOUNCE_DURATION_SECONDS)).listen((intRangeValues) {
print('UPDATE CALLED AT: ${DateTime.Now().second} --- ${intRangeValue}');
return sl<ClipsRepository>().updateClip(clipId: clipEntity.id,clipStart: intRangeValues.start,clipEnd: intRangeValues.end);
});
// Called via onChanged
void updateClip(RangeValues rangeValues) {
if ((rangeValues.end - rangeValues.start) < MIN_CLIP_DURATION_SECONDS) return;
print('ADDING RANGE VALUES: ${rangeValues.start} --- ${rangeValues.end}');
rangeValuesPublishSubject.add(intRangeValues);
clipEntity = clipEntity.copyWith(clipStartTimestamp: rangeValues.start,clipEndTimestamp: rangeValues.end);
emit(RangeValuesUpdated(rangeValues));
updateClipsSubject();
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)