确保在AngularJS后续HTTP Ajax调用的正确顺序
问题描述:
假设我们有一个自动完成一个超级简单的搜索触发的KEYUP /击的$ http.get()请求:确保在AngularJS后续HTTP Ajax调用的正确顺序
<input type="text" ng-model="keyword" ng-change="makeRequest()">
和
$scope.makeRequest = function() {
$http.get(url).then(function(res) {
// update the typeahead list here.
});
}
维持传递响应的顺序的最简单方法是什么?由于变化的延迟,更早的结果通常会最终导致用户混淆。 我正在寻找一些顺序,而不是直接去抖,这将防止在某个按键间隔下发出请求。
答
您可以跟踪最新的请求和响应忽略,除非它从最新的...
var latestRequest = 0;
$scope.makeRequest = function() {
var thisRequest = ++latestRequest;
$http.get(url).then(function(res) {
if (thisRequest === latestRequest) {
// update the typeahead
}
});
}
我已经想通这是最简单和最直接的方式做到这一点有一个时间间隔组合检查(只是为了让API休息一下)。最后在params中检查最新的关键字,而不是查询计数本身:'$ http.get(url,params).then(function(res.data){if(params.keyword === latestKeyword){$ scope.results = res.data});' – ienes 2014-09-01 08:30:22