Skip to content

Instantly share code, notes, and snippets.

@laser
laser / errors.js
Last active December 29, 2015 07:09
Error-handling w/ES6 generators
function procrastinatingAdd(x, y) {
var errMsg = "Expected number and got ";
setTimeout(function() {
if (isNaN(x)) gen.throw(new TypeError(errMsg + typeof x));
if (isNaN(y)) gen.throw(new TypeError(errMsg + typeof y));
gen.next(x + y);
}, 500);
}
var gen = function* () {
@laser
laser / example1.js
Last active December 29, 2015 11:29
ES6 Generators
setTimeout(function(){
_get("/something.ajax?greeting", function(err, greeting) {
if (err) { console.log(err); throw err; }
_get("/else.ajax?who&greeting="+greeting, function(err, who) {
if (err) { console.log(err); throw err; }
console.log(greeting+" "+who);
});
});
}, 1000);
@laser
laser / B.js
Created November 26, 2013 19:13
ES6 Generators
sync(function* (resume) {
try (e) {
yield setTimeout(resume, 1000);
var greeting = yield _get('/something.ajax?greeting', resume)
var who = yield _get('/else.ajax?who&greeting=' + greeting, resume)
console.log(greeting + ' ' + who)
}
catch (e) {
console.log(e);
throw e;
@laser
laser / A.js
Created November 26, 2013 19:13
ES6 Generators
setTimeout(function(){
_get("/something.ajax?greeting", function(err, greeting) {
if (err) { console.log(err); throw err; }
_get("/else.ajax?who&greeting="+greeting, function(err, who) {
if (err) { console.log(err); throw err; }
console.log(greeting+" "+who);
});
});
}, 1000);
@laser
laser / C.js
Created November 26, 2013 19:15
ES6 Generators
function* fibonacci() {
var a = 0, b = 1, c = 0;
while (true) {
yield a;
c = a;
a = b;
b = c + b;
}
}
@laser
laser / D.js
Created November 26, 2013 19:17
ES6 Generators
function* powGenerator() {
var result = Math.pow(yield "a", yield "b");
return result;
}
var g = powGenerator();
console.log(g.next().value); // "a", from the first yield
console.log(g.next(10).value); // "b", from the second
console.log(g.next(2).value); // 100, the result
@laser
laser / E.js
Last active December 29, 2015 11:29
E.js
function* powGenerator() {
var result = Math.pow(----10----, yield "b");
return result;
}
@laser
laser / F.js
Last active December 29, 2015 11:29
F.js
function* powGenerator() {
var result = Math.pow(----10----, ----2----);
return result;
}
@laser
laser / G.js
Last active December 29, 2015 11:29
G.js
// **************
// framework code
function sync(gen) {
var iterable, resume;
resume = function(err, retVal) {
if (err) iterable.raise(err);
iterable.next(retVal); // resume!
};
@laser
laser / H.js
Created November 26, 2013 19:20
H.js
try {
firstAsync(function(err, a) {
if (err) { console.log(err); throw err; }
secondAsync(function(err, b) {
if (err) { console.log(err); throw err; }
thirdAsync(function(err, c) {
if (err) { console.log(err); throw err; }
callback(a, b, c);
});
});