Skip to content

Instantly share code, notes, and snippets.

@dweinstein
Last active August 29, 2015 14:22
Show Gist options
  • Save dweinstein/14947f8e79afd580664c to your computer and use it in GitHub Desktop.
Save dweinstein/14947f8e79afd580664c to your computer and use it in GitHub Desktop.
async with generators / promises
// http://pag.forbeslindesay.co.uk/#/22
function async(makeGenerator){
return function (){
var generator = makeGenerator.apply(this, arguments)
function handle(result){ // { done: [Boolean], value: [Object] }
if (result.done) return result.value
return result.value.then(function (res){
return handle(generator.next(res))
}, function (err){
return handle(generator.throw(err))
})
}
return handle(generator.next())
}
}
// http://pag.forbeslindesay.co.uk/#/28 (parallel operations)
var get = async(function *(){
var left = yield readJSON('left.json')
var right = yield readJSON('right.json')
return {left: left, right: right}
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment