假设我们有一个带有自动完成功能的超简单搜索表单,它会在keyup / keypress上触发$ http.get()请求:
<input type="text" ng-model="keyword" ng-change="makeRequest()">
和
$scope.makeRequest = function() {
$http.get(url).then(function(res) {
// update the typeahead list here.
});
}
维护传递响应的顺序的最简单方法是什么?由于不同的延迟,早期的结果经常出现,这使用户感到困惑。 我正在寻找一些订单,而不是直接的去抖,这会阻止在某个击键间隔下发出请求。
答案 0 :(得分:1)
您可以跟踪最新请求并忽略响应,除非它来自最新的...
var latestRequest = 0;
$scope.makeRequest = function() {
var thisRequest = ++latestRequest;
$http.get(url).then(function(res) {
if (thisRequest === latestRequest) {
// update the typeahead
}
});
}