以角度1.5取消http请求

时间:2016-12-08 15:49:26

标签: angularjs promise httprequest angular-promise

我们正在根据用户输入发出HTTP请求。因此,每次用户输入字符时,都会启动HTTP请求。我们遇到的问题是:用户将输入ABC,然后输入ABCDABCD会在ABC之前回复。因此,显示的结果与ABCD不匹配。它们匹配ABC

以下是我们目前的解决方案。我们拒绝所有尚未解决的承诺。在我看来,这似乎是一种反模式。有没有一种方法可以带来更好的性能,可读性或更好的功能?

function cancelPreviousSearchRequest(previousSearchRequest) {
        if(previousSearchRequest) {
            previousSearchRequest._defer.resolve();
        }
    }

function getPVendors(typed, subTypes) {

    var pVendorsDefer = $q.defer();
    var pVendorsPromise = pVendorsDefer.promise;
    $http.get(SERVLET_CONTEXT + RestConstants.masterDataIntegrationSearchByPvendorName(typed, subTypes), {timeout: pVendorsPromise})
        .success(function(data){
            var result = _.get(data, '_embedded.paymentVendors', []);
            pVendorsDefer.resolve(result);
        })
        .error(function(data){
            if(data != null) {
                growl.error("Service error occurred while retrieving Payment Vendors");
           }
            pVendorsDefer.reject();
        });

    pVendorsPromise._defer = pVendorsDefer;
    return pVendorsPromise;
}

评论中的注释:

我们正在进行辩护:ng-model-options="{ debounce: 150 }"

0 个答案:

没有答案