async-rails 0.2.10 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/async-rails/version.rb +1 -1
- data/vendor/assets/javascripts/async.js +59 -31
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 70969f55042fe2f0ebd73b62429c669b1aba2cba
|
4
|
+
data.tar.gz: d49d49c31d1945008a754c59a96edcc4d68d1ee0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7bc3d32c07997aca0e9748329f38fba1fddc25e4d6755bd9e8a3d38b7c77a6d24bd4710ecaeec62c22737e5c2b781a6940b5157d6ec24d90d366fde64f951975
|
7
|
+
data.tar.gz: f1d7b4560cad1e30f5d9ec3511d4dd5cd9adbe2b320f446beab11f08ae71ca862624fc4972020cb8bb15508cdbf3a5a749fe185376a822f4c01cba66f506ebf3
|
data/lib/async-rails/version.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
/*jshint onevar: false, indent:4 */
|
1
2
|
/*global setImmediate: false, setTimeout: false, console: false */
|
2
3
|
(function () {
|
3
4
|
|
@@ -27,6 +28,10 @@
|
|
27
28
|
|
28
29
|
//// cross-browser compatiblity functions ////
|
29
30
|
|
31
|
+
var _isArray = Array.isArray || function (obj) {
|
32
|
+
return toString.call(obj) === '[object Array]';
|
33
|
+
};
|
34
|
+
|
30
35
|
var _each = function (arr, iterator) {
|
31
36
|
if (arr.forEach) {
|
32
37
|
return arr.forEach(iterator);
|
@@ -108,19 +113,20 @@
|
|
108
113
|
}
|
109
114
|
var completed = 0;
|
110
115
|
_each(arr, function (x) {
|
111
|
-
iterator(x, only_once(
|
112
|
-
if (err) {
|
113
|
-
callback(err);
|
114
|
-
callback = function () {};
|
115
|
-
}
|
116
|
-
else {
|
117
|
-
completed += 1;
|
118
|
-
if (completed >= arr.length) {
|
119
|
-
callback(null);
|
120
|
-
}
|
121
|
-
}
|
122
|
-
}));
|
116
|
+
iterator(x, only_once(done) );
|
123
117
|
});
|
118
|
+
function done(err) {
|
119
|
+
if (err) {
|
120
|
+
callback(err);
|
121
|
+
callback = function () {};
|
122
|
+
}
|
123
|
+
else {
|
124
|
+
completed += 1;
|
125
|
+
if (completed >= arr.length) {
|
126
|
+
callback(null);
|
127
|
+
}
|
128
|
+
}
|
129
|
+
}
|
124
130
|
};
|
125
131
|
async.forEach = async.each;
|
126
132
|
|
@@ -422,8 +428,11 @@
|
|
422
428
|
|
423
429
|
addListener(function () {
|
424
430
|
if (_keys(results).length === keys.length) {
|
425
|
-
callback
|
431
|
+
var theCallback = callback;
|
432
|
+
// prevent final callback from calling itself if it errors
|
426
433
|
callback = function () {};
|
434
|
+
|
435
|
+
theCallback(null, results);
|
427
436
|
}
|
428
437
|
});
|
429
438
|
|
@@ -472,7 +481,7 @@
|
|
472
481
|
|
473
482
|
async.waterfall = function (tasks, callback) {
|
474
483
|
callback = callback || function () {};
|
475
|
-
if (tasks
|
484
|
+
if (!_isArray(tasks)) {
|
476
485
|
var err = new Error('First argument to waterfall must be an array of functions');
|
477
486
|
return callback(err);
|
478
487
|
}
|
@@ -505,7 +514,7 @@
|
|
505
514
|
|
506
515
|
var _parallel = function(eachfn, tasks, callback) {
|
507
516
|
callback = callback || function () {};
|
508
|
-
if (tasks
|
517
|
+
if (_isArray(tasks)) {
|
509
518
|
eachfn.map(tasks, function (fn, callback) {
|
510
519
|
if (fn) {
|
511
520
|
fn(function (err) {
|
@@ -545,7 +554,7 @@
|
|
545
554
|
|
546
555
|
async.series = function (tasks, callback) {
|
547
556
|
callback = callback || function () {};
|
548
|
-
if (tasks
|
557
|
+
if (_isArray(tasks)) {
|
549
558
|
async.mapSeries(tasks, function (fn, callback) {
|
550
559
|
if (fn) {
|
551
560
|
fn(function (err) {
|
@@ -633,7 +642,8 @@
|
|
633
642
|
if (err) {
|
634
643
|
return callback(err);
|
635
644
|
}
|
636
|
-
|
645
|
+
var args = Array.prototype.slice.call(arguments, 1);
|
646
|
+
if (test.apply(null, args)) {
|
637
647
|
async.doWhilst(iterator, test, callback);
|
638
648
|
}
|
639
649
|
else {
|
@@ -661,7 +671,8 @@
|
|
661
671
|
if (err) {
|
662
672
|
return callback(err);
|
663
673
|
}
|
664
|
-
|
674
|
+
var args = Array.prototype.slice.call(arguments, 1);
|
675
|
+
if (!test.apply(null, args)) {
|
665
676
|
async.doUntil(iterator, test, callback);
|
666
677
|
}
|
667
678
|
else {
|
@@ -675,9 +686,17 @@
|
|
675
686
|
concurrency = 1;
|
676
687
|
}
|
677
688
|
function _insert(q, data, pos, callback) {
|
678
|
-
if(data
|
689
|
+
if (!_isArray(data)) {
|
679
690
|
data = [data];
|
680
691
|
}
|
692
|
+
if(data.length == 0) {
|
693
|
+
// call drain immediately if there are no tasks
|
694
|
+
return async.setImmediate(function() {
|
695
|
+
if (q.drain) {
|
696
|
+
q.drain();
|
697
|
+
}
|
698
|
+
});
|
699
|
+
}
|
681
700
|
_each(data, function(task) {
|
682
701
|
var item = {
|
683
702
|
data: task,
|
@@ -690,7 +709,7 @@
|
|
690
709
|
q.tasks.push(item);
|
691
710
|
}
|
692
711
|
|
693
|
-
if (q.saturated && q.tasks.length === concurrency) {
|
712
|
+
if (q.saturated && q.tasks.length === q.concurrency) {
|
694
713
|
q.saturated();
|
695
714
|
}
|
696
715
|
async.setImmediate(q.process);
|
@@ -751,8 +770,9 @@
|
|
751
770
|
saturated: null,
|
752
771
|
empty: null,
|
753
772
|
drain: null,
|
773
|
+
drained: true,
|
754
774
|
push: function (data, callback) {
|
755
|
-
if(data
|
775
|
+
if (!_isArray(data)) {
|
756
776
|
data = [data];
|
757
777
|
}
|
758
778
|
_each(data, function(task) {
|
@@ -760,6 +780,7 @@
|
|
760
780
|
data: task,
|
761
781
|
callback: typeof callback === 'function' ? callback : null
|
762
782
|
});
|
783
|
+
cargo.drained = false;
|
763
784
|
if (cargo.saturated && tasks.length === payload) {
|
764
785
|
cargo.saturated();
|
765
786
|
}
|
@@ -769,13 +790,14 @@
|
|
769
790
|
process: function process() {
|
770
791
|
if (working) return;
|
771
792
|
if (tasks.length === 0) {
|
772
|
-
if(cargo.drain) cargo.drain();
|
793
|
+
if(cargo.drain && !cargo.drained) cargo.drain();
|
794
|
+
cargo.drained = true;
|
773
795
|
return;
|
774
796
|
}
|
775
797
|
|
776
798
|
var ts = typeof payload === 'number'
|
777
799
|
? tasks.splice(0, payload)
|
778
|
-
: tasks.splice(0);
|
800
|
+
: tasks.splice(0, tasks.length);
|
779
801
|
|
780
802
|
var ds = _map(ts, function (task) {
|
781
803
|
return task.data;
|
@@ -843,7 +865,9 @@
|
|
843
865
|
var callback = args.pop();
|
844
866
|
var key = hasher.apply(null, args);
|
845
867
|
if (key in memo) {
|
846
|
-
|
868
|
+
async.nextTick(function () {
|
869
|
+
callback.apply(null, memo[key]);
|
870
|
+
});
|
847
871
|
}
|
848
872
|
else if (key in queues) {
|
849
873
|
queues[key].push(callback);
|
@@ -887,8 +911,8 @@
|
|
887
911
|
return async.mapSeries(counter, iterator, callback);
|
888
912
|
};
|
889
913
|
|
890
|
-
async.
|
891
|
-
var fns =
|
914
|
+
async.seq = function (/* functions... */) {
|
915
|
+
var fns = arguments;
|
892
916
|
return function () {
|
893
917
|
var that = this;
|
894
918
|
var args = Array.prototype.slice.call(arguments);
|
@@ -906,6 +930,10 @@
|
|
906
930
|
};
|
907
931
|
};
|
908
932
|
|
933
|
+
async.compose = function (/* functions... */) {
|
934
|
+
return async.seq.apply(null, Array.prototype.reverse.call(arguments));
|
935
|
+
};
|
936
|
+
|
909
937
|
var _applyEach = function (eachfn, fns /*args...*/) {
|
910
938
|
var go = function () {
|
911
939
|
var that = this;
|
@@ -940,16 +968,16 @@
|
|
940
968
|
next();
|
941
969
|
};
|
942
970
|
|
971
|
+
// Node.js
|
972
|
+
if (typeof module !== 'undefined' && module.exports) {
|
973
|
+
module.exports = async;
|
974
|
+
}
|
943
975
|
// AMD / RequireJS
|
944
|
-
if (typeof define !== 'undefined' && define.amd) {
|
976
|
+
else if (typeof define !== 'undefined' && define.amd) {
|
945
977
|
define([], function () {
|
946
978
|
return async;
|
947
979
|
});
|
948
980
|
}
|
949
|
-
// Node.js
|
950
|
-
else if (typeof module !== 'undefined' && module.exports) {
|
951
|
-
module.exports = async;
|
952
|
-
}
|
953
981
|
// included directly via <script> tag
|
954
982
|
else {
|
955
983
|
root.async = async;
|