Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

zig

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

zig

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

  • 0.1.0
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

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.0

Tested on: Node 0.10.35

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

Keywords

FAQs

Package last updated on 27 Jan 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc