使用 AngularJS 优化 ajax 调用

Optimize ajax calls with AngularJS

我正在创建类似这样的东西 example 但对于搜索建议,使用此代码:

  $scope.$watch('terms', function(newValue, oldValue) {
      if (angular.equals(newValue, oldValue)) {
          return;
      }

      getResults(); //$http.get...
  });

如果我写得很快,它将对我的服务器产生大量 ajax 调用。但是在这个例子中你可以看到它工作得很好并且服务器不会对每个调用做出响应(我认为这就是发生的事情)。

那么,做到这一点并防止滥用的最佳方法是在服务器端做一些事情?

如果您使用 Angular > v1.3,只需使用 ngModelOptions debounce。

https://docs.angularjs.org/api/ng/directive/ngModelOptions

<input type="text" name="userName"
       ng-model="user.name"
       ng-model-options="{ debounce: 1000 }" />

因此更新等待,例如1000ms 直到触发更新。 应该能很好地解决您的问题。