Skip to content

Instantly share code, notes, and snippets.

@laser
Last active December 29, 2015 11:29
Show Gist options
  • Save laser/7664417 to your computer and use it in GitHub Desktop.
Save laser/7664417 to your computer and use it in GitHub Desktop.
G.js
// **************
// framework code
function sync(gen) {
var iterable, resume;
resume = function(err, retVal) {
if (err) iterable.raise(err);
iterable.next(retVal); // resume!
};
iterable = gen(resume);
iterable.next();
}
function _get(url, callback) {
var x = new XMLHttpRequest();
x.onreadystatechange = function() {
if (x.readyState == 4) {
callback(null, x.responseText);
}
};
x.open("GET", url);
x.send();
}
// ****************
// application code
sync(function* (resume) {
log('foo');
var resp = yield _get("blix.txt", resume); // suspend!
log(resp);
});
log('bar'); // not part of our generator function’s body
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment