拒绝所有未兑现的承诺

时间:2014-11-07 15:52:42

标签: angularjs

我有一种情况,我在使用$ q服务的服务中有许多承诺。在地点变更方面,我想拒绝所有未兑现的承诺,以防止任何链式承诺的运行。这可能吗?

非常感谢任何想法

C

2 个答案:

答案 0 :(得分:0)

你想要做的是,某些活动取消承诺。使用$ http,您可以通过超时承诺取消任何有效/待处理的承诺。

e.g。以下

app.factory("movies", function($http, $q){

    var getById = function(id){
        var canceller = $q.defer();

        var cancel = function(reason){
            canceller.resolve(reason);
        };

        var promise =
            $http.get("/api/movies/slow/" + id, { timeout: canceller.promise})
                .then(function(response){
                   return response.data;
                });

        return {
            promise: promise,
            cancel: cancel
        };
    };

    return {
        getById: getById
    };

});

您可以从任何地方调用此取消功能

   <button ng-click="cancel(request)">Cancel</button>

详细了解此here

答案 1 :(得分:-1)

我认为您可以使用$ q.all()方法来管理一组链式承诺。