仅取消之前的$ http请求

时间:2015-08-01 07:58:57

标签: angularjs angularjs-directive

我已从服务器下载支持搜索..现在搜索开始我绑定更改事件以从输入发送请求到服务器的条件

现在它在用户输入时不断向服务器发送呼叫,因此我制作了一些代码,因此如果用户正在键入并仅发送最后一个请求,则取消之前的呼叫。 这是在用户输入时调用的方法

var currentAjax = null;
var canceller = $q.defer();
var cancel = function (reason) {
    canceller.resolve(reason);
};
$scope.callAjax = function (isSearch) {
  if ($scope.ajaxOptions) {
    if (currentAjax != null) {
        console.log("here");
        currentAjax.cancel("user cancel");
    }
    currentAjax = null;
    $scope.isLoading = true;
    if (isSearch) {
        $scope.inputModel = [];
    }
    var _request = {};
    _request.url = '';
    _request.method = 'POST';
    // _request.headers = {'Content-Type': 'JSON'}

    if ($scope.ajaxOptions.url) {
        _request.url = $scope.ajaxOptions.url;
    }

    if ($scope.ajaxOptions.method) {
        _request.method = $scope.ajaxOptions.method;
    }

    if ($scope.ajaxOptions.headers) {
        _request.headers = $scope.ajaxOptions.headers;
    }

    _request.data = $scope.ajaxOptions.prepareRequest($scope.getParams());
    _request.timeout = canceller.promise;

    var promise = $http(_request).
    success(function (data, status, headers, config) {
        currentAjax = null;
        $scope.isLoading = false;
        // some code 
    }).
    error(function (data, status, headers, config) {
        $scope.isLoading = false;
    });

    currentAjax = {
        promise: promise,
        cancel: cancel
    };
 }
}

它完成了取消请求,但它也取消了最后一个请求,我怎么能防止假设用户输入“angul” 它应该请求“a”,“an”,“ang”,“angu”,而不是“angul”..

此处正在运作https://github.com/unicredit/hbase-rdd-examples/blob/master/src/main/scala/unicredit/example/WriteBulk.scala

会在 isteven-multi-select-twinked.js 行号:615

中找到此方法

0 个答案:

没有答案