Skip to content

Instantly share code, notes, and snippets.

module.exports = {
/**
* Function to verify all validations
* @param {...any} paramsRaw An array of validation results,
* Values can either be `true` or `error string`.
*/
all: async function (...paramsRaw) {
const params = await Promise.all(paramsRaw)
const error = params
.filter(val => typeof val === 'string')[0]
function readFile(path) {
return new Promise((resolve, reject) => {
fs.readFile(path, (err, data) => {
if (err) {
return reject(err)
}
return resolve(data)
})
})
}
function buyBread (input) {
return gotoStore(input)
.then(() => {
return buyBrownBread(input)
.catch(() => buyWhiteBread(input))
})
}
function showFavouriteArticles () {
getUser()
.then(user => getFavouriteArticles(user))
.then(articles => showArticles(articles))
.catch(err => notifyError(err))
}
@pratyushcrd
pratyushcrd / callback-hell-example.js
Last active April 8, 2019 21:39
An example to show nested callback's complexity
function buyBread (input, callback) {
gotoStore(input, (storeErr, storeResponse) => {
if (storeErr) {
return callback(storeErr, null)
}
buyBrownBread(input, (brownBreadErr, brownBreadResponse) => {
if (brownBreadErr) {
buyWhiteBread(input, (whiteBreadErr, whiteBreadResponse) => {
if (whiteBreadErr) {
return callback(whiteBreadErr, null)
@pratyushcrd
pratyushcrd / js
Created April 7, 2019 20:05
callback-hell
function buyBread (input, callback) {
gotoStore(input, (storeErr, storeResponse) => {
if (storeErr) {
return callback(Error('Store is unavailable'), null)
}
buyBrownBread(input, (brownBreadErr, brownBreadResponse) => {
// if unable to buy brown bread, buy white bread
if (brownBreadErr) {
buyWhiteBread(input, (whiteBreadErr, whiteBreadResponse) => {
if (whiteBreadErr) {
// Reverse only the letters of words in a sentence
// A helper function to reverse words
const reverseWord = str => str.split('').reverse().join('')
// Actual function
const reverseLettersInSentence = sentence => sentence
.split(' ')
.map(reverseWord)
.join(' ')
const flatten = arr => arr
.reduce((a, b) => a.concat(b))
// Execution
flatten([
[1, 2, 3],
[4, 5],
[6]
])
const positiveSum = arr => {
let sum = 0
let i = 0
let ii = arr.length
for (i = 0; i < ii; ++i) {
if (arr[i] > 0) {
sum += arr[i]
}
}
}
const somefunc = string => string
.split(/* Something */)
.map(/* Something */)
.filter(/* Something */)