0.3.0 • Published 6 years ago

zig v0.3.0

Weekly downloads
549
License
MIT
Repository
github
Last release
6 years ago

Zig - Simple, but naughty, control flow for Node.js

Why have an if statement when you can have an if function?

A special case solution for callback hell that focuses on developer ease-of-use. Executes your functions in series or parallel, tracks errors and results, and provides conditionals.

Allows you to move blocks of code around to change the order of execution.

Current Version: 0.1.1

Tested on: Node 0.10.38

Build Status

Annotated Source

Support

If you're using this module, feel free to contact me on twitter if you have any questions! :) @rjrodger

Gitter chat

Install

npm install zig

Quick Example

Some callbacks:

function color(val,callback) {
  callback(null,{color:val})
}

function quality(val,callback) {
  callback(null,{quality:val})
}

function sound(val,callback) {
  callback(null,{sound:val})
}

function texture(val,callback) {
  callback(null,{texture:val})
}

Nice and linear down the page.

var zig = require('..')

var result = {}

zig()
  .start()

  .wait(function(data,done){
    color('red',done)
  })
  .step(function(data){
    console.log('color:'+data.color)
    return result.color = data.color
  })

  .wait(function(data,done){
    quality('high',done)
  })
  .step(function(data){
    console.log('quality:'+data.quality)
    return result.quality = data.quality
  })

  .if( Math.random() < 0.5 )
  .wait(function(data,done){
    sound('violin',done)
  })
  .step(function(data){
    console.log('sound:'+data.sound)
    return result.sound = data.sound
  })
  .endif()

  .wait(function(data,done){
    texture('rough',done)
  })
  .step(function(data){
    console.log('texture:'+data.texture)
    return result.texture = data.texture
  })

  .end(function(err){
    if( err ) return console.log(err)
    console.log(result)
  })

Versus callback hell:

var result = {}

color('red', function(err,data){
  if( err ) return console.log(err)

  result.color = data.color
  console.log('color:'+data.color)

  quality('high', function(err,data){
    if( err ) return console.log(err)

    result.quality = data.quality
    console.log('quality:'+data.quality)

    if( Math.random() < 0.5 ) {
      sound('violin',function(err,data){
        if( err ) return console.log(err)

        result.sound = data.sound
        console.log('sound:'+data.sound)
        do_texture()
      })
    }
    else do_texture()

    function do_texture() {
      texture('rough', function(err,data){
        if( err ) return console.log(err)

        result.texture = data.texture
        console.log('texture:'+data.texture)

        console.log(result)
      })
    }
  })
})

Testing

npm test

Releases

  • 0.1.0: normalize test, build, and readme
  • 0.0.2: steps can exit
  • 0.0.1: first working version
0.3.0

6 years ago

0.2.0

6 years ago

0.1.1

9 years ago

0.1.0

9 years ago

0.0.2

10 years ago

0.0.1

10 years ago