diff options
Diffstat (limited to 'src/service/xhr.bulk.js')
| -rw-r--r-- | src/service/xhr.bulk.js | 60 | 
1 files changed, 42 insertions, 18 deletions
| diff --git a/src/service/xhr.bulk.js b/src/service/xhr.bulk.js index c0940d9d..d7fc7990 100644 --- a/src/service/xhr.bulk.js +++ b/src/service/xhr.bulk.js @@ -15,9 +15,10 @@  angularServiceInject('$xhr.bulk', function($xhr, $error, $log){    var requests = [],        scope = this; -  function bulkXHR(method, url, post, callback) { +  function bulkXHR(method, url, post, success, error) {      if (isFunction(post)) { -      callback = post; +      error = success; +      success = post;        post = null;      }      var currentQueue; @@ -28,32 +29,55 @@ angularServiceInject('$xhr.bulk', function($xhr, $error, $log){      });      if (currentQueue) {        if (!currentQueue.requests) currentQueue.requests = []; -      currentQueue.requests.push({method: method, url: url, data:post, callback:callback}); +      var request = { +          method: method, +          url: url, +          data: post, +          success: success}; +      if (error) request.error = error; +      currentQueue.requests.push(request);      } else { -      $xhr(method, url, post, callback); +      $xhr(method, url, post, success, error);      }    }    bulkXHR.urls = {}; -  bulkXHR.flush = function(callback){ -    forEach(bulkXHR.urls, function(queue, url){ +  bulkXHR.flush = function(success, error) { +    forEach(bulkXHR.urls, function(queue, url) {        var currentRequests = queue.requests;        if (currentRequests && currentRequests.length) {          queue.requests = [];          queue.callbacks = []; -        $xhr('POST', url, {requests:currentRequests}, function(code, response){ -          forEach(response, function(response, i){ -            try { -              if (response.status == 200) { -                (currentRequests[i].callback || noop)(response.status, response.response); -              } else { -                $error(currentRequests[i], response); +        $xhr('POST', url, {requests: currentRequests}, +          function(code, response) { +            forEach(response, function(response, i) { +              try { +                if (response.status == 200) { +                  (currentRequests[i].success || noop)(response.status, response.response); +                } else if (isFunction(currentRequests[i].error)) { +                    currentRequests[i].error(response.status, response.response); +                } else { +                  $error(currentRequests[i], response); +                } +              } catch(e) { +                $log.error(e);                } -            } catch(e) { -              $log.error(e); -            } +            }); +            (success || noop)(); +          }, +          function(code, response) { +            forEach(currentRequests, function(request, i) { +              try { +                if (isFunction(request.error)) { +                  request.error(code, response); +                } else { +                  $error(request, response); +                } +              } catch(e) { +                $log.error(e); +              } +            }); +            (error || noop)();            }); -          (callback || noop)(); -        });          scope.$eval();        }      }); | 
