gpt4 book ai didi

javascript - 取消 Angular 服务 promise

转载 作者:行者123 更新时间:2023-12-02 13:49:22 25 4
gpt4 key购买 nike

我有一个执行 http 请求的 Controller 。
此请求可能需要 2 秒到 4 分钟才能返回一些数据。
我添加了一个按钮,如果搜索需要很长时间才能完成,用户应该单击该按钮来取消请求。

Controller :

$scope.search = function() {
myFactory.getResults()
.then(function(data) {
// some logic
}, function(error) {
// some logic
});
}

服务:

var myFactory = function($http, $q) {
return {
getResults: function(data) {
var deffered = $q.dafer();
var content = $http.get('someURL', {
data: {},
responseType: json
)}

deffered.resolve(content);
returned deffered.promise;
}
}
}

按钮点击:

$scope.cancelGetResults = function() {

// some code to cancel myFactory.getResults() promise

}

如何实现单击按钮来取消 myFactory.getResults() promise ?

最佳答案

问题使用 deferred antipattern通常应该避免这种情况,但它适合取消情况:

getResults: function(data) {
var deffered = $q.defer();

$http.get('someURL', {
data: {},
responseType: json
}).then(deffered.resolve, deferred.reject);

deffered.promise.cancel = function () {
deferred.reject('CANCELLED')
};

returned deffered.promise;
}

关于javascript - 取消 Angular 服务 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41125333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com