Angularjs promise rejection chaining

前端 未结 2 945
刺人心
刺人心 2020-12-24 12:15

I need to create chained promises:

var deferred = $q.defer();
$timeout(function() {
    deferred.reject({result: \'errror\'});
}, 3000);
deferred.promise.the         


        
2条回答
  •  不知归路
    2020-12-24 12:50

    And what the reason why it is done. In which case, the current behavior can be useful?

    It can be useful when in errorHandler you could try to repair error state and resolve promise somehow.

    var retriesCount = 0;
    
    function doWork()
    {
        return $http.post('url')
            .then(function(response){
                // check success-property of returned data
                if(response.data.success)
                    // just unwrap data from response, may be do some other manipulations
                    return response.data;
                else
                    // reject with error
                    return $q.reject('some error occured');
            })
            .catch(function(reason){
                if(retriesCount++ < 3)
                    // some error, let me try to recover myself once again
                    return doWork();
                else
                    // mission failed... finally reject
                    return $q.reject(reason);
            });
    }
    
    
    doWork().then(console.log, console.error);
    

提交回复
热议问题