aboutsummaryrefslogtreecommitdiffstats
path: root/src/service/xhr.bulk.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/service/xhr.bulk.js')
-rw-r--r--src/service/xhr.bulk.js60
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();
}
});