dylang's notebooks

  • Async-Await - /dylang/async-await
    Last edited 7 years ago
    'use strict'; const randomPuppy = require('random-puppy'); const captionBot = require('captionbot'); const whatDog = require('what-dog'); const loudRejection = require('loud-rejection'); loudRejection(); async function asyncAwaitExample () { const imageUrl = await randomPuppy(); // Node 6 has destructuring! // const [imageCaption, doggyData] = await [captionBot(randomImageUrl), whatDog(randomImageUrl)]; const results = [await captionBot(imageUrl), await whatDog(imageUrl)]; return { imageUrl: imageUrl, caption: results[0], breed: results[1].breed, about: results[1].about }; } asyncAwaitExample().then(console.log); exports.tonicEndpoint = asyncAwaitExample; module.exports = asyncAwaitExample;
  • callback-hell - /dylang/callback-hell
    Last edited 7 years ago
    'use strict'; const randomPuppy = require('random-puppy'); const captionBot = require('captionbot'); const whatDog = require('what-dog'); const Observable = require('rx-lite').Observable; function observableExample() { const puppyEmitter = randomPuppy.all('puppies'); const awwEmitter = randomPuppy.all('aww'); const catEmitter = randomPuppy.all('cats'); const puppySource = Observable.fromEvent(puppyEmitter, 'data'); const awwSource = Observable.fromEvent(awwEmitter, 'data'); const catSource = Observable.fromEvent(catEmitter, 'data'); return Observable .merge(puppySource, awwSource, catSource) .filter(url => url.includes('.jpg')) .take(5) .flatMap(url => { return Promise.all([captionBot(url), whatDog(url)]).then(results => { return { url: url, caption: results[0], breed: results[1].breed, about: results[1].about }; }); }); } observableExample().subscribe(function(data) { console.log(data); });
  • Observable - /dylang/observable
    Last edited 7 years ago
    'use strict'; const randomPuppy = require('random-puppy'); const captionBot = require('captionbot'); const whatDog = require('what-dog'); const Observable = require('rx-lite').Observable; function observableExample() { const puppyEmitter = randomPuppy.all('puppies'); const awwEmitter = randomPuppy.all('aww'); const catEmitter = randomPuppy.all('cats'); const puppySource = Observable.fromEvent(puppyEmitter, 'data'); const awwSource = Observable.fromEvent(awwEmitter, 'data'); const catsSource = Observable.fromEvent(catEmitter, 'data'); const sharedSource = Observable .merge(puppySource, awwSource, catsSource) .filter(url => url.includes('.jpg')) .take(10) .flatMap(url => { return Promise.all([captionBot(url), whatDog(url)]).then(results => { return { url: url, caption: results[0], breed: results[1].breed, about: results[1].about }; }); } ); return sharedSource; } observableExample().subscribe(data => { console.log(data); }, err => console.log(err), () => console.log('done!')); //module.exports = observableExample;
  • endpoint-test - /dylang/endpoint-test
    Last edited 7 years ago
    'use strict'; const randomPuppy = require('random-puppy'); const captionBot = require('captionbot'); const whatDog = require('what-dog'); const loudRejection = require('loud-rejection'); loudRejection(); async function asyncAwaitExample () { const imageUrl = await randomPuppy(); // Node 6 has destructuring! // const [imageCaption, doggyData] = await [captionBot(randomImageUrl), whatDog(randomImageUrl)]; const results = [await captionBot(imageUrl), await whatDog(imageUrl)]; return { imageUrl: imageUrl, caption: results[0], breed: results[1].breed, about: results[1].about }; } exports.tonicEndpoint = async function(request, response) { const results = await asyncAwaitExample(); response.end(JSON.stringify(results)); }
  • Generator - /dylang/generator
    Last edited 7 years ago
    'use strict'; const randomPuppy = require('random-puppy'); const captionBot = require('captionbot'); const whatDog = require('what-dog'); const co = require('co'); const loudRejection = require('loud-rejection'); loudRejection(); function* generatorExample () { const imageUrl = yield randomPuppy(); // Node 6 has destructuring! // const [imageCaption, doggyData] = yield [captionBot(randomImageUrl), whatDog(randomImageUrl)]; const results = yield [captionBot(imageUrl), whatDog(imageUrl)]; return { imageUrl: imageUrl, caption: results[0], breed: results[1].breed, about: results[1].about }; } co(function*() { const results = yield generatorExample(); console.log(results); }); module.tonicDev = generatorExample;
  • Promise - /dylang/promise
    Last edited 7 years ago
    'use strict'; const randomPuppy = require('random-puppy'); const captionBot = require('captionbot'); const whatDog = require('what-dog'); const loudRejection = require('loud-rejection'); loudRejection(); function promiseExample () { return randomPuppy().then(function(imageUrl){ return Promise.all([ imageUrl, captionBot(imageUrl), whatDog(imageUrl) ]); }).then(function(arrayOfResults){ return { imageUrl: arrayOfResults[0], caption: arrayOfResults[1], breed: arrayOfResults[2].breed, about: arrayOfResults[2].about }; }); } promiseExample().then(function(results){ console.log(results); }).catch(function(err){ console.log(err.message, err.stack); }); exports.tonicEndpoint = promiseExample;
  • Callback - /dylang/callback
    Last edited 7 years ago
    'use strict'; const randomPuppy = require('random-puppy'); const captionBot = require('captionbot'); const whatDog = require('what-dog'); function callbackExample (cb) { randomPuppy(function(err, imageUrl){ if (err) { return cb(err); } captionBot(imageUrl, function(err, caption){ if (err) { return cb(err); } whatDog(imageUrl, function(err, doggyData){ if (err) { return cb(err); } cb(null, { imageUrl: imageUrl, caption: caption, breed: doggyData.breed, about: doggyData.about }); }); }); }); } callbackExample(function(err, result){ if (err) { console.log(err); } else { console.log(result) } });