【发布时间】:2020-01-23 18:15:59
【问题描述】:
我正在编写一个查询引擎,用户在其中输入参数,然后单击查询。 ng-click 事件最多可能需要 7-10 秒,但页面 1 的呈现时间不到一秒。如果用户想在该时间结束之前重新提交新查询,则会有一点延迟,因为我相信原始函数调用仍在返回。
有没有办法突然停止任何以前的函数调用并只调用最近的函数调用?
下面是查询函数和来自 HTML 的调用
$scope.query = function(name, matchMode, domain) {
name = name.trim();
$scope.pageNumber = 0;
start = 0
end = $scope.perPage;
$http.get(ROOT_API+"query/asset/"+name+"/"+matchMode+"/"+domain).success(
function(data){
$scope.results=data;
$scope.displayResults=$scope.results.slice(start,end);
$scope.totalResults=data.length;
$scope.totalPages=Math.floor($scope.totalResults / $scope.perPage);
setPageValues($scope.displayResults)
});
setTimeout(function() {
$scope.displayResults.concat(setPageValues($scope.results.slice(end,$scope.totalResults)))
},2000);
}
<input ng-model="queryName" placeholder="name">
<input ng-model="matchMode" placeholder="match mode" defaultValue="ANYWHERE">
<input ng-model="domain" placeholder="domain" defaultValue="ANY">
<button ng-click="query(queryName, matchMode, domain)">QUERY</button>
【问题讨论】:
-
这能回答你的问题吗? How to cancel an $http request in AngularJS?
-
@Taplar,我不希望基于超时取消。我想根据另一个点击事件取消。
-
timeout没有文字超时。超时被延迟/承诺。您可以选择何时解决它。
标签: javascript angularjs dom-events