Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import { signature } from "./common/signature3"
  2. import { Task }      from "./task"
  3. import { create }    from "./create"
  4.  
  5. /**
  6.  * creates a element task that allows a external value to be passed into a task stack.
  7.  * @param {any} element the element.
  8.  * @param {(any) => Task} element mapping function.
  9.  * @returns {Task}
  10.  */
  11. export function element(element: any, func: (element: any) => Task): Task
  12.  
  13. /**
  14.  * creates a task that runs its inner tasks in parallel.
  15.  * @param {any[]} arguments
  16.  * @returns {Task}
  17.  */
  18. export function element(...args: any[]): Task {
  19.   return create("core/element", context => signature(args)
  20.     .map   (["any", "function"])
  21.     .err   ((err) => context.fail(err))
  22.     .run   ((element: any, func: (element: any) => Task) => {
  23.  
  24.       let task = func(element)
  25.       task.run  (data  => context.log(data))
  26.           .then (()    => context.ok())
  27.           .catch(error => context.fail(error))
  28.      
  29.       context.abort(() => {
  30.         task.cancel()
  31.         context.log("aborted")
  32.         context.fail("aborted")
  33.       })
  34.     })
  35.   )
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement