确保AngularJS中后续HTTP ajax调用的正确顺序

时间:2014-08-31 21:52:05

标签: javascript ajax angularjs angularjs-service

假设我们有一个带有自动完成功能的超简单搜索表单,它会在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.
   });
}

维护传递响应的顺序的最简单方法是什么?由于不同的延迟,早期的结果经常出现,这使用户感到困惑。 我正在寻找一些订单,而不是直接的去抖,这会阻止在某个击键间隔下发出请求。

1 个答案:

答案 0 :(得分:1)

您可以跟踪最新请求并忽略响应,除非它来自最新的...

var latestRequest = 0;
$scope.makeRequest = function() {
   var thisRequest = ++latestRequest;
   $http.get(url).then(function(res) {
      if (thisRequest === latestRequest) {
        // update the typeahead
      }
   });
}