Running generators
co(function * () {
yield Promise.resolve(true)
}).then(...)
A generator can yield
a thunk or promise. Using co()
will immediately invoke the block inside it.
Generator → Promise
var fn = co.wrap(function * (val) {
return yield Promise.resolve(val)
})
fn().then(...)
Use co.wrap()
. Most of the time, you’ll be using co.wrap.
Generator → Node callback
var get = unyield(function * () {
})
get(function (err, res) { ... })
Use unyield. (You can thunkify this later)
Node callback → Thunk
var readFile = thunkify(fs.readFile)
co(function * () {
var data = yield readFile('index.txt', 'utf-8')
})
Use thunkify. You can yield this. You can also use thenify too.
Using Node.js API
var readFile = require('mz/fs').readFile
var getLines = co.wrap(function * (filename) {
var data = yield readFile(filename, 'utf-8')
return data.split('\n')
})
getLines('file.txt').then((lines) => { ... })
Use mz for async Node.js API. You can also either thunkify or thenify them instead.
0 Comments for this cheatsheet. Write yours!