Skip to content

Instantly share code, notes, and snippets.

View pionize's full-sized avatar

Andrew Junior Ongi Karyanto pionize

View GitHub Profile
@pionize
pionize / ImageService.js
Created February 23, 2017 03:36
Image service
'use strict';
const Promise = require('bluebird');
const fs = require('fs');
const crypto = require('crypto');
const gm = require('gm').subClass({imageMagick: true});
var base64 = require('node-base64-image');
const _ = require('lodash');
function ImageServiceService() {
@pionize
pionize / callbackhell.js
Created April 17, 2017 10:00
Callback Hell Example
fs.readdir(source, function (err, files) {
if (err) {
console.log('Error finding files: ' + err)
} else {
files.forEach(function (filename, fileIndex) {
console.log(filename)
gm(source + filename).size(function (err, values) {
if (err) {
console.log('Error identifying file size: ' + err)
} else {
@pionize
pionize / promiseExample.js
Created April 17, 2017 10:01
Promise Example
var Promise = require('bluebird');
var fs = require('fs');
Promise.promisifyAll(fs);
var myFile = '/tmp/test';
fs.readFileAsync(myFile, 'utf8').then(function(txt) {
txt = txt + '\nAppended something!';
fs.writeFile(myFile, txt);
}).then(function() {
console.log('Appended text!');
}).catch(function(err) {
@pionize
pionize / rookieMistake1.js
Created April 17, 2017 10:03
Rookie Mistake 1: Promise Pyramid
db.allDocs({
include_docs: true,
attachments: true
}).then(function (result) {
var docs = result.rows;
docs.forEach(function(element) {
localdb.put(element.doc).then(function(response) {
alert("Pulled doc with id " + element.doc._id + " and added to local db.");
}).catch(function (err) {
if (err.name == 'conflict') {
@pionize
pionize / promisePattern.js
Created April 17, 2017 10:04
Promise Pattern
db.allDocs(...).then(function (resultOfAllDocs) {
return localdb.put(...);
}).then(function (resultOfPut) {
return localdb.get(...);
}).then(function (resultOfGet) {
return localdb.put(...);
}).catch(function (err) {
console.log(err);
});
@pionize
pionize / rookieMistake2.js
Created April 17, 2017 10:05
Rookie Mistake 2: Async Loop
// I want to remove() all docs
db.allDocs({include_docs: true}).then(function (result) {
result.rows.forEach(function (row) {
db.remove(row.doc);
});
}).then(function () {
// I believe all docs have been removed()
});
@pionize
pionize / promiseAll.js
Created April 17, 2017 10:06
Promise All
db.allDocs({include_docs: true}).then(function (result) {
return Promise.all(result.rows.map(function (row) {
return db.remove(row.doc);
}));
}).then(function (arrayOfResults) {
// All docs have really been removed() now!
});
@pionize
pionize / promiseCatch.js
Created April 17, 2017 10:08
Promise Catch
somePromise().then(function () {
return anotherPromise();
}).then(function () {
return yetAnotherPromise();
}).catch(console.log.bind(console));
@pionize
pionize / bluebirdPromise.js
Created April 17, 2017 10:10
Bluebird Promise
// using Bluebird Promise
const Promise = require('bluebird');
new Promise(function (resolve, reject) {
fs.readFile('myfile.txt', function (err, file) {
if (err) {
return reject(err);
}
resolve(file);
});
@pionize
pionize / rookieMistake5.js
Created April 17, 2017 10:12
Promise without return
somePromise().then(function () {
someOtherPromise();
}).then(function () {/* ... */});