async-rails 0.2.6 → 0.2.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e0e7b0d13a37da98039e8da88e88f0e257e3e8f9
4
- data.tar.gz: 2e09d2e96d2ea2731bd2e59c300be4a9eb3291b0
3
+ metadata.gz: bf7ed9ac6955d573c6be07f818c207a752b12942
4
+ data.tar.gz: a1d2ff576984764147b7567aa7b665c63f054346
5
5
  SHA512:
6
- metadata.gz: 47b7cde97618644cf4efc612fa62a25f0b6f8b98d60a80620f5a149f625d6ae14e36df6a05b348892c949a33a80efd6eec6afb1aa901c7d60c7fcadfb71fd435
7
- data.tar.gz: 991eefa9d4bd8581e02a136bea290d4dfb2c439e4bb587d010ab76181dcf981edf480bb772e7f972b3b7fee07259dbd1a7b9cc41ba33a4bc11f8da7edd923347
6
+ metadata.gz: 88acfee5cf852aa961b9980053efb67884f716ef9dc497fd67c75457e2feaebafb98de36414fb06608e6cecf7867330876cafcdc968694a3ed4ae7af337896a5
7
+ data.tar.gz: 209c1e3c6c4724f2d39b1c47410e30edea7fe0c4a62a598d92aea1546b11d4477aeb29b2eba86a10e2e6c768e85a436de506ee21d972f5aeb95e2d899d68d05d
@@ -1,5 +1,5 @@
1
1
  module Async
2
2
  module Rails
3
- VERSION = "0.2.6"
3
+ VERSION = "0.2.7"
4
4
  end
5
5
  end
@@ -75,11 +75,11 @@
75
75
  //// nextTick implementation with browser-compatible fallback ////
76
76
  if (typeof process === 'undefined' || !(process.nextTick)) {
77
77
  if (typeof setImmediate === 'function') {
78
- async.nextTick = function (fn) {
79
- setImmediate(fn);
80
- };
78
+ async.setImmediate = setImmediate;
79
+ async.nextTick = setImmediate;
81
80
  }
82
81
  else {
82
+ async.setImmediate = async.nextTick;
83
83
  async.nextTick = function (fn) {
84
84
  setTimeout(fn, 0);
85
85
  };
@@ -87,6 +87,12 @@
87
87
  }
88
88
  else {
89
89
  async.nextTick = process.nextTick;
90
+ if (typeof setImmediate !== 'undefined') {
91
+ async.setImmediate = setImmediate;
92
+ }
93
+ else {
94
+ async.setImmediate = async.nextTick;
95
+ }
90
96
  }
91
97
 
92
98
  async.each = function (arr, iterator, callback) {
@@ -119,7 +125,6 @@
119
125
  }
120
126
  var completed = 0;
121
127
  var iterate = function () {
122
- var sync = true;
123
128
  iterator(arr[completed], function (err) {
124
129
  if (err) {
125
130
  callback(err);
@@ -131,16 +136,10 @@
131
136
  callback(null);
132
137
  }
133
138
  else {
134
- if (sync) {
135
- async.nextTick(iterate);
136
- }
137
- else {
138
- iterate();
139
- }
139
+ iterate();
140
140
  }
141
141
  }
142
142
  });
143
- sync = false;
144
143
  };
145
144
  iterate();
146
145
  };
@@ -441,7 +440,7 @@
441
440
  }
442
441
  else {
443
442
  results[k] = args;
444
- async.nextTick(taskComplete);
443
+ async.setImmediate(taskComplete);
445
444
  }
446
445
  };
447
446
  var requires = task.slice(0, Math.abs(task.length - 1)) || [];
@@ -467,6 +466,10 @@
467
466
 
468
467
  async.waterfall = function (tasks, callback) {
469
468
  callback = callback || function () {};
469
+ if (tasks.constructor !== Array) {
470
+ var err = new Error('First argument to waterfall must be an array of functions');
471
+ return callback(err);
472
+ }
470
473
  if (!tasks.length) {
471
474
  return callback();
472
475
  }
@@ -485,7 +488,7 @@
485
488
  else {
486
489
  args.push(callback);
487
490
  }
488
- async.nextTick(function () {
491
+ async.setImmediate(function () {
489
492
  iterator.apply(null, args);
490
493
  });
491
494
  }
@@ -607,21 +610,12 @@
607
610
 
608
611
  async.whilst = function (test, iterator, callback) {
609
612
  if (test()) {
610
- var sync = true;
611
613
  iterator(function (err) {
612
614
  if (err) {
613
615
  return callback(err);
614
616
  }
615
- if (sync) {
616
- async.nextTick(function () {
617
- async.whilst(test, iterator, callback);
618
- });
619
- }
620
- else {
621
- async.whilst(test, iterator, callback);
622
- }
617
+ async.whilst(test, iterator, callback);
623
618
  });
624
- sync = false;
625
619
  }
626
620
  else {
627
621
  callback();
@@ -629,45 +623,27 @@
629
623
  };
630
624
 
631
625
  async.doWhilst = function (iterator, test, callback) {
632
- var sync = true;
633
626
  iterator(function (err) {
634
627
  if (err) {
635
628
  return callback(err);
636
629
  }
637
630
  if (test()) {
638
- if (sync) {
639
- async.nextTick(function () {
640
- async.doWhilst(iterator, test, callback);
641
- });
642
- }
643
- else {
644
- async.doWhilst(iterator, test, callback);
645
- }
631
+ async.doWhilst(iterator, test, callback);
646
632
  }
647
633
  else {
648
634
  callback();
649
635
  }
650
636
  });
651
- sync = false;
652
637
  };
653
638
 
654
639
  async.until = function (test, iterator, callback) {
655
640
  if (!test()) {
656
- var sync = true;
657
641
  iterator(function (err) {
658
642
  if (err) {
659
643
  return callback(err);
660
644
  }
661
- if (sync) {
662
- async.nextTick(function () {
663
- async.until(test, iterator, callback);
664
- });
665
- }
666
- else {
667
- async.until(test, iterator, callback);
668
- }
645
+ async.until(test, iterator, callback);
669
646
  });
670
- sync = false;
671
647
  }
672
648
  else {
673
649
  callback();
@@ -675,26 +651,17 @@
675
651
  };
676
652
 
677
653
  async.doUntil = function (iterator, test, callback) {
678
- var sync = true;
679
654
  iterator(function (err) {
680
655
  if (err) {
681
656
  return callback(err);
682
657
  }
683
658
  if (!test()) {
684
- if (sync) {
685
- async.nextTick(function () {
686
- async.doUntil(iterator, test, callback);
687
- });
688
- }
689
- else {
690
- async.doUntil(iterator, test, callback);
691
- }
659
+ async.doUntil(iterator, test, callback);
692
660
  }
693
661
  else {
694
662
  callback();
695
663
  }
696
664
  });
697
- sync = false;
698
665
  };
699
666
 
700
667
  async.queue = function (worker, concurrency) {
@@ -720,7 +687,7 @@
720
687
  if (q.saturated && q.tasks.length === concurrency) {
721
688
  q.saturated();
722
689
  }
723
- async.nextTick(q.process);
690
+ async.setImmediate(q.process);
724
691
  });
725
692
  }
726
693
 
@@ -744,7 +711,6 @@
744
711
  q.empty();
745
712
  }
746
713
  workers += 1;
747
- var sync = true;
748
714
  var next = function () {
749
715
  workers -= 1;
750
716
  if (task.callback) {
@@ -755,19 +721,8 @@
755
721
  }
756
722
  q.process();
757
723
  };
758
- var cb = only_once(function () {
759
- var cbArgs = arguments;
760
-
761
- if (sync) {
762
- async.nextTick(function () {
763
- next.apply(null, cbArgs);
764
- });
765
- } else {
766
- next.apply(null, arguments);
767
- }
768
- });
724
+ var cb = only_once(next);
769
725
  worker(task.data, cb);
770
- sync = false;
771
726
  }
772
727
  },
773
728
  length: function () {
@@ -803,7 +758,7 @@
803
758
  cargo.saturated();
804
759
  }
805
760
  });
806
- async.nextTick(cargo.process);
761
+ async.setImmediate(cargo.process);
807
762
  },
808
763
  process: function process() {
809
764
  if (working) return;
@@ -945,24 +900,39 @@
945
900
  };
946
901
  };
947
902
 
948
- async.applyEach = function (fns /*args...*/) {
903
+ var _applyEach = function (eachfn, fns /*args...*/) {
949
904
  var go = function () {
950
905
  var that = this;
951
906
  var args = Array.prototype.slice.call(arguments);
952
907
  var callback = args.pop();
953
- return async.each(fns, function (fn, cb) {
908
+ return eachfn(fns, function (fn, cb) {
954
909
  fn.apply(that, args.concat([cb]));
955
910
  },
956
911
  callback);
957
912
  };
958
- if (arguments.length > 1) {
959
- var args = Array.prototype.slice.call(arguments, 1);
913
+ if (arguments.length > 2) {
914
+ var args = Array.prototype.slice.call(arguments, 2);
960
915
  return go.apply(this, args);
961
916
  }
962
917
  else {
963
918
  return go;
964
919
  }
965
920
  };
921
+ async.applyEach = doParallel(_applyEach);
922
+ async.applyEachSeries = doSeries(_applyEach);
923
+
924
+ async.forever = function (fn, callback) {
925
+ function next(err) {
926
+ if (err) {
927
+ if (callback) {
928
+ return callback(err);
929
+ }
930
+ throw err;
931
+ }
932
+ fn(next);
933
+ }
934
+ next();
935
+ };
966
936
 
967
937
  // AMD / RequireJS
968
938
  if (typeof define !== 'undefined' && define.amd) {
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: async-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Chen