【发布时间】:2020-04-20 22:55:56
【问题描述】:
我们在页面上有一个搜索栏和分页,使用jquery进行ajax请求 当开始搜索特定记录时,许多 ajax 请求被触发,虽然我们在前一个请求中添加了 ajax abort,但在 rails 查询仍然发生,
当先前的 ajax 请求中止时如何停止 rails 处理
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4.2
我们在页面上有一个搜索栏和分页,使用jquery进行ajax请求 当开始搜索特定记录时,许多 ajax 请求被触发,虽然我们在前一个请求中添加了 ajax abort,但在 rails 查询仍然发生,
当先前的 ajax 请求中止时如何停止 rails 处理
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4.2
如果 Rails 服务器收到 AJAX 请求,.abort 不会阻止服务器执行它。 This stackoverflow answer 描述了如何使用 readyState 检查最后一个请求是否完成。
但是,我相信您正在寻找的是debounce function。 debounce 函数限制了函数被触发的速率。您可以使用它来确保搜索栏仅在自上次收到输入后经过特定秒后才触发后端请求。这将大大减少发送到 Rails 服务器的查询数量。
【讨论】: