Skip to content

Instantly share code, notes, and snippets.

@ssddi456
Last active January 17, 2018 05:54
Show Gist options
  • Save ssddi456/4eb8163c3c6452d0da51c3a93ea12ae9 to your computer and use it in GitHub Desktop.
Save ssddi456/4eb8163c3c6452d0da51c3a93ea12ae9 to your computer and use it in GitHub Desktop.
wrap a thunk to generator
function wrapper ( process ) {
var res= [];
var resolvers = [];
var add_next = function() {
res.push(new Promise(function( resolve, reject ) {
resolvers.push({
resolve,
reject
})
}))
}
add_next();
var j = 0;
var callback = function( err, ret ) {
if( err ){
resolvers[j].reject(err);
} else {
resolvers[j].resolve(ret);
}
j ++;
if(!resolvers[j]) {
add_next();
}
}
process(callback)
var k = 0;
var interator = {
next () {
var ret = res[k];
if(!ret){
add_next();
}
ret = res[k];
k++
return ret;
}
};
return interator;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment