async-rails 0.2.6 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
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