有没有办法中止SlickGrid异步渲染?

时间:2010-08-05 04:28:44

标签: javascript jquery slickgrid

我有一个搜索页面,其结果在SlickGrid中呈现。这是一个执行onkeyup的ajax搜索,因此可以执行搜索,调用Slick.Grid实例的render,并在第一个异步{{1}之前返回另一个结果完成。我想在第二个ajax请求返回后立即取消初始render,这样就不会同时发生两次render次呼叫。

使用示例编辑

以下是我正在做的事情,render用于跟踪执行顺序。

alert

当我在function setupGrid() { slickDataView = new Slick.Data.DataView(); slickGrid = new Slick.Grid(slickGridDiv, slickDataView.rows, slickGridColumns, slickGridOptions); slickDataView.onRowsChanged.subscribe(function(rows) { slickGrid.removeRows(rows); slickGrid.updateRowCount(); slickGrid.render(); }); slickDataView.onRowCountChanged.subscribe(function(args) { slickGrid.updateRowCount(); slickGrid.render(); }); } function performSearch() { jQuery.get('searchPage.php', {MODEL_ID: userInputField.val()}, function(results) { slickDataView.beginUpdate(); alert(1); slickDataView.setItems(results); alert(2); slickDataView.endUpdate(); } ); } setupGrid(); userInputField.keyup(function() { performSearch(); }); 文本字段中快速连续输入两个数字时,我按此顺序收到以下警告:

userInputField

1 个答案:

答案 0 :(得分:1)

您的网页上一定有其他内容。 您列出的示例是不可能的 - JavaScript执行永远不会被触发的事件中断。在当前代码执行完毕后,事件刚刚排队并由事件循环拾取。您在示例中看到的是1212.

您将需要限制AJAX调用,并取消之前调用的回调,因为您的AJAX响应可能会无序返回,旧的搜索结果可能会覆盖较新的搜索结果。

相关问题