co-spawn
Version:
setImmediate for the co generator framework
77 lines (54 loc) • 1.4 kB
Markdown
for the [co](https://github.com/visionmedia/co) generator framework
[](http://travis-ci.org/eugeneware/co-spawn)
Calling setImmediate in a co-friendly way is painful and you have to launch
co() in your setImmediate function. This is a simple wrapper.
## Installation
This module is installed via npm:
``` bash
$ npm install co-spawn
```
## Example Usage
### Non-blocking spawn
``` js
var spawn = require('co-spawn');
co(function *() {
var c = { counter: 0 };
// this will run first
c.counter++;
// put the following code into another turn of the event loop
spawn(function *() {
yield finish(c, done);
});
// this will run second
c.counter++;
})();
function *finish(c, cb) {
// this will run last
c.counter++;
expect(c.counter).to.equal(3);
done();
}
```
If for some reason you want to block on the spawn, just yield:
``` js
var spawn = require('co-spawn');
co(function *() {
var c = { counter: 0 };
// this will run 1st
c.counter++;
// put the following code into another turn of the event loop, but block
yield spawn(function *() {
yield finish(c, done);
});
// this will run last
c.counter++;
})();
function *finish(c, cb) {
// this will run 2nd
c.counter++;
expect(c.counter).to.equal(2);
done();
}
```
setImmediate