UNPKG

rubico

Version:

[a]synchronous functional programming

31 lines (28 loc) 720 B
const SelfReferencingPromise = require('./SelfReferencingPromise') const asyncIteratorSome = require('./asyncIteratorSome') const isPromise = require('./isPromise') /** * @name iteratorSome * * @synopsis * ```coffeescript [specscript] * iteratorSome( * iterator Iterator, * predicate any=>Promise|boolean, * ) -> boolean * ``` */ const iteratorSome = function (iterator, predicate) { for (const item of iterator) { const predication = predicate(item) if (isPromise(predication)) { return asyncIteratorSome( iterator, predicate, new Set([SelfReferencingPromise(predication)])) } if (predication) { return true } } return false } module.exports = iteratorSome