Есть ли способ прервать асинхронный рендеринг SlickGrid? - PullRequest
0 голосов
/ 05 августа 2010

У меня есть страница поиска, результаты которой отображаются в SlickGrid. Это поиск ajax, который выполняет onkeyup, поэтому можно выполнить поиск, вызвать экземпляр render экземпляра Slick.Grid и получить еще один результат до завершения первого асинхронного render. Я хотел бы отменить начальный render, как только возвращается второй запрос Ajax, чтобы не было одновременно двух render вызовов.

РЕДАКТИРОВАТЬ С ПРИМЕРОМ :

Вот что я делаю с alert s для отслеживания порядка выполнения.

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
1
2

1 Ответ

1 голос
/ 05 августа 2010

На вашей странице должно быть что-то еще. Приведенный вами пример невозможен - выполнение JavaScript никогда не прерывается инициируемым событием. Событие просто ставится в очередь и принимается циклом событий после выполнения текущего кода. То, что вы увидите в своем примере, это 1212.

Вы захотите ограничить вызовы AJAX, а также отменить обратные вызовы от предыдущих вызовов, поскольку ваши ответы AJAX могут возвращаться не в порядке, и более старые результаты поиска могут переопределять более новые.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...