7.1.1 • Published 7 years ago

ez-async v7.1.1

Weekly downloads
4
License
MIT
Repository
github
Last release
7 years ago

ez-async

Yet another async library using generators

This library aims to be compatible to promises and node style callbacks.

Note: Node style callbacks accept two parameters function cb (error, result) {..}.

Handle Promises
var f = async(function * (getCallback, arg1, arg2 /*, arg3, ..*/) {
  // `getCallback` is used to handle node style callbacks. It is inserted in the `arguments` list as the first parameter
  var [err, res] = yield Promise.resolve("Success") // => [null, "Success"]
  var [err, res] = yield Promise.reject("Fail") // => ["Fail", null]
  var [err, [p1, p2]] = yield Promise.all([Promise.resolve('p1'), Promise.resolve('p2')])
  return 'success'
})

// f(..) returns a promise
f(arg1, arg2).then(..)
Handle node style callbacks
var fs = require('fs')
var async = require('ez-async')

/* 
  getFile(path : string) : Promise
  
  A function that accepts _one_ argument `path` and returns a Promise.
*/
var getFile = async(function * (getCallback, path) {
  // `getCallback` creates callbacks for node style async functions
  // if `getCallback` was called, the next yield returns its result (the yielded value is ignored)

  var [err, content] = yield fs.readFile(path, 'utf8', getCallback())
  if (err != null) {
    throw new Error('File is not available!')
  } else {
    return content
  }
})

// Now we can call `getFile(path)` and do the usual promise stuff
getFile('package.json')
  .then(function (content) {
    console.log(content) // logs file content if file exists  
  })
  .catch(function (err) {
    console.err(err) // logs 'File is not available!' if an error occurs
  })
Asynchronous magic for node style callbacks

You can also create named callbacks. The next yield will wait for all callbacks to be called

var getFiles = async(function * (getCallback, path1, path2) {
  fs.readFile(path, 'utf8', getCallback('path1'))
  fs.readFile(path, 'utf8', getCallback('path1'))
  // wait for both callbacks to be called:
  var { path1, path2 } = yield
  return [path1, path2]
})

License

ez-build-lib is licensed under the MIT License.

7.1.1

7 years ago

7.1.0

7 years ago

7.0.13

7 years ago

7.0.12

7 years ago

7.0.11

7 years ago

7.0.10

7 years ago

7.0.8

7 years ago

7.0.7

7 years ago

7.0.6

7 years ago

7.0.5

7 years ago

7.0.4

7 years ago

7.0.3

7 years ago

7.0.3-alpha.6

7 years ago

7.0.3-alpha.5

7 years ago

7.0.3-alpha.4

7 years ago

7.0.3-alpha.2

7 years ago

7.0.3-alpha.1

7 years ago

7.0.3-alpha.0

7 years ago

7.0.0

7 years ago

6.0.0

7 years ago

5.0.10

7 years ago

5.0.9

7 years ago

5.0.8

7 years ago

5.0.7

7 years ago

5.0.6

7 years ago

5.0.5

7 years ago

5.0.4

7 years ago

5.0.3

7 years ago

5.0.2

7 years ago

5.0.1

7 years ago

5.0.0

7 years ago

4.2.1-alpha.0

7 years ago

4.2.0-alpha.0

7 years ago

4.1.0

7 years ago

4.0.6

7 years ago

4.0.5

7 years ago

4.0.4

7 years ago

1.0.0-alpha.1

8 years ago

1.0.0-alpha.0

8 years ago

2.0.3

8 years ago

2.0.0

8 years ago

1.0.0

8 years ago