0.0.5 • Published 10 years ago

await.js v0.0.5

Weekly downloads
3
License
-
Repository
-
Last release
10 years ago

#await.js Invoke asynchronous functions in a synchronous way, so you can get rid of the callback hell.
Thanks to Node's new feature "generator", it is light-weight and pure JavaScript;)

##Installation

npm install await.js

##Usage Patterns First, as it usually goes:

var await = require('await.js');

Then You need to wrap your code as a function with two paramters await and defer, which should be marked with * to tell Node this is a generator.
Pass the function to await.async

await.async(function* (await, defer) {
  
});

Inside the generator we can call asynchronous functions as if it's synchronous. Here we give a example of fs.readFile to show you how to do it.
Pass defer as a callback to the asynchronous function you want to invoke.

fs.readFile('textFile', defer)

Add a yield just before the invoke and wrap them all into await, which will magically return the callback result.

var fileContent = await(yield fs.readFile('textFile', defer));

yield is necessary because it is what enables us to pause the current flow and wait for the asynchronous invoke returning its result. ##Exceptions Error will be automatically thrown if any. So feel relax to use try/catch:

  try {
    var data = await(yield fs.readFile("textFile", defer));
    console.log(data.toString());
  }
  catch (e) {
    console.log("Error catched: ", e.toString());
  }

The missing sleep function for Node

yield await(5000);//sleep for 5 seconds

It just works;)

##Attention

  • Generator is only available in Node v0.11, so the devel version of Node is required and you need to pass the --harmony flag through to Node to make await.js work. Just don't worry about it as the stable release supporting generator on its way.
  • It is assumed that the callback function receives two arguments, the first as a error and the second as the result. So if there are multiple results you can only get the first one.

##License Do What the Fuck You Want to

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago