everySeries.js

  1. 'use strict';
  2. const { EachSeries } = require('./eachSeries.js');
  3. class EverySeries extends EachSeries {
  4. constructor(collection, iterator) {
  5. super(collection, iterator);
  6. this._result = true;
  7. }
  8. _callResolve(value) {
  9. if (!value) {
  10. this._promise._resolve(false);
  11. } else if (--this._rest === 0) {
  12. this._promise._resolve(true);
  13. } else {
  14. this._iterate();
  15. }
  16. }
  17. }
  18. module.exports = { everySeries, EverySeries };
  19. /**
  20. * `Aigle.everySeries` is almost the same as [`Aigle.every`](https://suguru03.github.io/aigle/docs/Aigle.html#every), but it will work in series.
  21. * @param {Array|Object} collection
  22. * @param {Function} iterator
  23. * @return {Aigle} Returns an Aigle instance
  24. * @example
  25. * const order = [];
  26. * const collection = [1, 4, 2];
  27. * const iterator = (num, index, collection) => {
  28. * return Aigle.delay(num * 10)
  29. * .then(() => {
  30. * order.push(num);
  31. * return true;
  32. * });
  33. * };
  34. * Aigle.everySeries(collection, iterator)
  35. * .then(value => {
  36. * console.log(value); // true
  37. * console.log(order); // [1, 4, 2];
  38. * });
  39. *
  40. * @example
  41. * const order = [];
  42. * const collection = { a: 1, b: 4, c: 2 };
  43. * const iterator = (num, key, collection) => {
  44. * return Aigle.delay(num * 10)
  45. * .then(() => {
  46. * order.push(num);
  47. * return true;
  48. * });
  49. * };
  50. * Aigle.everySeries(collection, iterator)
  51. * .then(value => {
  52. * console.log(value); // true
  53. * console.log(order); // [1, 4, 2];
  54. * });
  55. *
  56. * @example
  57. * const order = [];
  58. * const collection = [1, 4, 2];
  59. * const iterator = num => {
  60. * return Aigle.delay(num * 10)
  61. * .then(() => {
  62. * order.push(num);
  63. * return n % 2;
  64. * });
  65. * };
  66. * Aigle.everySeries(collection, iterator)
  67. * .then(value => {
  68. * console.log(value); // false
  69. * console.log(order); // [1, 4];
  70. * });
  71. */
  72. function everySeries(collection, iterator) {
  73. return new EverySeries(collection, iterator)._execute();
  74. }