У меня возникла проблема с AJAX typeahead/live-update по мере вашего появления, которые возвращают результаты не по порядку. Есть ли у кого-нибудь опыт в методах борьбы с этим?JS AJAX typeahead result ordering/race состояние
Проблема:
- Введите запрос, например "поиск по ключевому слову".
- Даже с некоторым debouncing, вероятно, сработает несколько вызовов AJAX при вводе, скажем
"sea"
и"search term"
. - Результат поиска для
sea
больше, чем уsearch term
, поэтому его запрос AJAX фактически завершается после нового запроса. - Результирующая проблема: введите
search term
, но правильные результаты будут отображаться на экране в течение секунды, только для замены на результаты дляsea
.
Голые кости JQuery псевдокод:
$('body').on('keyup', '#searchBox', function(){
query = $("#searchBox").val();
$.ajax({
type: 'GET',
url: '/endpoint.php?query=' + query,
success: function (response) {
// Update view here
$("#view").html(response.text);
}
});
});
Угловая псевдокод:
// HTML
<input ng-keyup = "search()" ng-model="searchBox" placeholder = "Search">
{{results}}
// JS
$scope.search = function(){
$http({
method: 'GET',
url: '/endpoint.php?query=' + $scope.searchBox
}).then(function successCallback(response) {
$scope.results = response.data;
}, function errorCallback(response) {
console.log(response);
});
}