使用Angular我想一次只发送一个数据请求。我想在发送新请求时跳过上一个请求。为了实现它,我在我的控制器中为请求承诺创建了全局变量:
var searchRequest = null;
然后我定义了一个发送请求的函数:
function sendSearchRequest() {
if (searchRequest != null)
searchRequest.reject('new request');
searchRequest = $q.defer();
dataService.search(buildQuery())
.then(function (result) { searchRequest.resolve(result); })
.catch(function (e) { searchRequest.reject(e); });
return searchRequest.promise;
}
它是我的数据服务和更高级别之间的代理功能,它应该取消先前的请求(如果有的话)并发送新的请求。然后我只需按如下方式调用此函数:
function search() {
sendSearchRequest()
.then(function (result) { ... })
.catch(function (e) { ... });
};
我的查询在对search()
的两次调用之间发生更改,但是我获取了第一次查询的结果。我究竟做错了什么?为什么我不能跳过第一个请求并从第二个请求中获取数据?