在我的应用程序中,我有一个observableArray,可以从DB加载数据。这个observableArray从DB中填充前25个项目,从向下滚动它会加载另外25个项目然后继续。
现在,我想实现搜索,它应该显示搜索来自数据库的整个数据的结果,而不仅仅是显示的25个项目。
我试图通过点击搜索按钮将整个搜索文本发送到数据库来获取搜索结果,并且数据库中有大量数据需要很长时间才能加载数据。
请告诉我如何在ms内从DB获得所需的结果。提前谢谢。
答案 0 :(得分:0)
要使用Knockout进行良好的搜索,您应该使用rate-limiter
扩展与输入绑定的searchText
可观察量
this.searchText = ko.observable('').extend({ rateLimit: { timeout: 500, method: "notifyWhenChangesStop" } })
在输入保持500ms(即用户停止输入时)后,这将调用任何订阅者。您还可以使用默认方法notifyAtFixedRate
至少每X秒调用一次API。
最重要的是,fiddle!
注意:,如果您的查询需要40秒,这听起来像是数据库查询的问题。它可能需要很长时间,因为你的服务器充满了请求,但这似乎仍然非常缓慢。这是我们使用的策略,它运行良好,但我们的API响应时间<200毫秒。