takeWhile.js 497 B

1234567891011121314151617181920212223
  1. 'use strict';
  2. const {none} = require('../defs');
  3. const takeWhile = (f, finalValue = none) => {
  4. let test = true;
  5. return value => {
  6. if (!test) return finalValue;
  7. const result = f(value);
  8. if (result && typeof result.then == 'function') {
  9. return result.then(result => {
  10. if (result) return value;
  11. test = false;
  12. return finalValue;
  13. });
  14. }
  15. if (result) return value;
  16. test = false;
  17. return finalValue;
  18. };
  19. };
  20. module.exports = takeWhile;