뭔가 다른 페이지에 계속이 있어야한다 : 나는 빠르게 연속으로 userInputField
텍스트 필드에 두 개의 숫자를 입력 할 때
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(); });
나는이 시퀀스에서 다음과 같은 경고를 얻을. 나열된 예제는 불가능합니다 - 이벤트가 시작되면 JavaScript 실행이 중단되지 않습니다. 이벤트는 현재 코드가 실행 완료된 후 이벤트 루프에 의해 큐에 저장되고 선택됩니다. 귀하의 예에서 볼 수있는 것은 1212입니다.
AJAX 응답이 다시 돌아오고 이전 검색 결과가 무시 될 수 있기 때문에 AJAX 호출을 차단하고 이전 호출에서 콜백을 취소해야합니다 새로운 것들.
출처
2010-08-05 15:45:48
Tin
당신은 그 행동을 어떻게 일으키는 지 자세히 설명해 줄 수 있습니까? 1) 브라우저 JS 실행은 단일 스레드이므로 문자 그대로 동시에 실제로는 아무 것도 수행 할 수 없습니다. 2) grid.render()에 대한 API 수준의 호출은 키보드 키를 놓는 동안 스크롤 위치가 변경되지 않았기 때문에 거의 모든 상황에서 renderRows()에 대한 동기 호출을 발생시킵니다. – Tin