JSFiddle - React, Tailwind, and code Playground
JavaScript
function doM(gen) {
function step(value) {
var result = gen.next(value);
if (result.done) {
return result.value;
}
return result.value.then(step);
}
return step();
}
var db = {
collection: {
find: function(query) {
return new Promise(function(resolve) {
setTimeout(function() {
resolve([1, 2, 3, 4, 5]);
}, 1000);
});
}
}
};
function* queryDB(query) {
var rows = yield db.collection.find(query);
var sum = 0;
for (var x of rows) {
sum += x;
}
return sum;
}
var sumPromise = doM(queryDB('query example'));
sumPromise.then(console.log.bind(console));