【发布时间】:2016-02-23 06:52:37
【问题描述】:
我最近熟悉了 Angular 的去抖动功能。我的 debounce 用例是我想保存(服务器端)用户在键入时键入的内容,但我不希望每次击键都有 HTTP 请求。为我的表单设置一个 500 的去抖动值允许在用户停止输入半秒时保存数据,而无需单击 [保存] 按钮。这很方便。
但是,我发现了一个缺点。特别是如果去抖值很高(我可能希望它取决于有效负载的大小),用户可能会在保存数据之前离开页面。
在上面的示例中,用户可能会键入“Hello!”,等待半秒钟,然后键入“很高兴认识你!”,然后在去抖时间到期之前导航到另一个页面或关闭浏览器。 (这并不牵强,尤其是当文本输入靠近导航控件时。)在这种情况下,“你好!”得救了,但“很高兴认识你!”迷路了。
我已经看到页面(通常是充满广告的页面)在您离开页面时会触发令人讨厌的 Javascript,所以我想知道 Angular 是否有一些功能可以执行当用户的去抖动期到期时会发生的任何事情离开页面。
当然,我知道有一些特殊情况,比如掉电,无论如何还是会导致数据丢失!
【问题讨论】:
标签: angularjs debouncing