UNPKG

shortcake

Version:

Asynchronous invoke and other goodies for cake.

46 lines (34 loc) 827 B
import log from '../log' import running from '../running' import {isPromise} from '../utils' # Invoke a enerator task continually until consumed invokeGenerator = (name, action, opts, cb) -> log.debug 'invokeGenerator', name running.start name gen = action opts last = null prev = null done = (err) -> running.stop name console.error err.stack if err? cb err, (last ? prev) next = (value) -> try res = gen.next value catch err console.error err.stack return done err prev = last last = res.value if isPromise promise = res.value promise .then (value) -> next value .catch (err) -> done err else if not res.done next res.value else done() next() export default invokeGenerator