Speed up user listing by performing parallel requests
This commit is contained in:
+6
-3
@@ -845,9 +845,10 @@ angular.module('Application').service('Client', ['$http', '$interval', 'md5', 'N
|
||||
});
|
||||
};
|
||||
|
||||
Client.prototype.getUsers = function (page, perPage, callback) {
|
||||
if (typeof page === 'function') {
|
||||
callback = page;
|
||||
Client.prototype.getUsers = function (search, page, perPage, callback) {
|
||||
if (typeof search === 'function') {
|
||||
callback = search;
|
||||
search = '';
|
||||
page = 1;
|
||||
perPage = 1000;
|
||||
}
|
||||
@@ -859,6 +860,8 @@ angular.module('Application').service('Client', ['$http', '$interval', 'md5', 'N
|
||||
}
|
||||
};
|
||||
|
||||
if (search) config.params.search = search;
|
||||
|
||||
get('/api/v1/users', config, function (error, data, status) {
|
||||
if (error) return callback(error);
|
||||
if (status !== 200) return callback(new ClientError(status, data));
|
||||
|
||||
@@ -18,6 +18,32 @@ if (search.accessToken) {
|
||||
}
|
||||
|
||||
// poor man's async in the global namespace
|
||||
function asyncForEachParallel(items, handler, callback) {
|
||||
var alreadyDone = 0;
|
||||
var errored = false;
|
||||
|
||||
if (items.length === 0) return callback();
|
||||
|
||||
function done(error) {
|
||||
// do nothing if already called back due to error
|
||||
if (errored) return;
|
||||
|
||||
if (error) {
|
||||
errored = true;
|
||||
return callback(error);
|
||||
}
|
||||
|
||||
++alreadyDone;
|
||||
|
||||
// we are done
|
||||
if (alreadyDone === items.length) callback();
|
||||
}
|
||||
|
||||
for (var i = 0; i < items.length; ++i) {
|
||||
handler(items[i], done);
|
||||
}
|
||||
}
|
||||
|
||||
function asyncForEach(items, handler, callback) {
|
||||
var cur = 0;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user