UNPKG

rafa

Version:

Rafa.js is a Javascript framework for building concurrent applications.

88 lines (77 loc) 2.02 kB
var Rafa = require(__dirname+'/../../../dist/rafa.js'); require(__dirname+"/../bench.js")( { name: 'Story: Promise', test: function(d) { return getStory('story.json').then(function(story) { addHtmlToPage(story.heading); return story.chapterURLs.map(getChapter) .reduce(function(chain, chapterPromise) { return chain.then(function() { return chapterPromise; }).then(function(chapter) { addHtmlToPage(chapter.html); }); }, Promise.resolve()); }).then(function() { addTextToPage("All done"); }, function(err) { addTextToPage("Argh, broken: " + err.message); reject(); }).then(function() { clearSpinner(); d.resolve(); }); } }, { name: 'Story: Rafa', test: function(d) { var stream = Rafa.stream(); stream .split(function(story) { addHtmlToPage(story.heading); return story.chapterURLs }) .map(getChapter) .each(function(chapter) { addHtmlToPage(chapter.html) }) .error(function(err) { addTextToPage("Argh, broken: " + err.message) }) .done(function() { addTextToPage("All done"); clearSpinner(); d.resolve(); }); stream.write(getStory('story.json'), true); } } ); function getStory(url) { return new Promise(function(resolve) { setTimeout(function() { resolve({ heading: 'Story Title', chapterURLs: ['Chapter 1', 'Chapter 2'] }); }); }); } function getChapter(url) { return new Promise(function(resolve) { setTimeout(function() { resolve({ html: '<p>This is content for ' + url + '</p>' }); }); }); } function addHtmlToPage(content) { log('addHtmlToPage', content); } function clearSpinner() { log('spinner'); } function addTextToPage(text) { log('text', text); } function log(a, b) { //console.log(a, b); }