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(); } }); |
