SAP UI5 里的防抖思路,为什么它不像 RxJS 那样写成 debounceTime(300) 在 SAP UI5 项目里讨论debounceTime(300),最常见的场景不是理论上的响应式编程,而是搜索框、输入框、表格过滤、值帮助建议、后端 OData 查询这些很日常的交互。手指在键盘上连续敲S、A、P,如果每敲一个字符都触发一次过滤或者一次 OData 请求,前端会频繁改 binding,后端会收到一串没必要的请求,Fiori 页面也会出现结果列表抖动、busy indicator 闪烁、表格反复重排这些体验问题。Angular 里很多开发者会自然写出valueChanges.pipe(debounceTime(300)),意思是用户停止输入 300 毫秒之后,再把最新的值往后传。RxJS 官方对debounceTime的定义也正是如此,它会延迟 source Observable 发出的通知,如果等待期间来了新的通知,之前那个待发通知会被丢弃,只保留最近一次,并在指定时间内没有新通知时发出。(rxjs.dev)把这个思路搬到 SAP UI5,答案要分两层看。严格讲,SAP UI5 没有一个和 Angular RxJSdebounceTime(300)完全同类的内建 operator,因为 UI5 的主编程模型不是把控件事件变成 Observable,然后用pipe串接 operator

本周精选

本月热点