This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class User { | |
constructor ({ name = 'Anonymous' }) { | |
this.name = name; | |
} | |
login () { | |
console.log(`${ this.name } logged in.`); | |
} | |
}; | |
class Student extends User { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const filter = (fn, arr) => arr.reduce((newArr, item) => { | |
return fn(item) ? newArr.concat([item]) : newArr; | |
}, []); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const curry = fn => (...args1) => { | |
if (args1.length === fn.length) { | |
return fn(...args1); | |
} | |
return (...args2) => { | |
const args = [...args1, ...args2]; | |
if (args.length >= fn.length) { | |
return fn(...args); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import speculation from 'speculation'; | |
const wait = ( | |
time, | |
cancel = Promise.reject() // By default, don't cancel | |
) => speculation((resolve, reject, onCancel) => { | |
const timer = setTimeout(resolve, time); | |
// Use onCancel to clean up any lingering resources | |
// and then call reject(). You can pass a custom reason. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// HOF Wraps the native Promise API | |
// to add take a shouldCancel promise and add | |
// an onCancel() callback. | |
const speculation = ( | |
fn, | |
cancel = Promise.reject() // Don't cancel by default | |
) => new Promise((resolve, reject) => { | |
const noop = () => {}; | |
const onCancel = ( |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const wait = time => new Promise( | |
res => setTimeout(() => res(), time) | |
); | |
wait(200) | |
// onFulfilled() can return a new promise, `x` | |
.then(() => new Promise(res => res('foo'))) | |
// the next promise will assume the state of `x` | |
.then(a => a) | |
// Above we returned the unwrapped value of `x` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const wait = ( | |
time, | |
cancel = Promise.reject() | |
) => new Promise((resolve, reject) => { | |
const timer = setTimeout(resolve, time); | |
const noop = () => {}; | |
cancel.then(() => { | |
clearTimeout(timer); | |
reject(new Error('Cancelled')); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const wait = time => new Promise((resolve) => setTimeout(resolve, time)); | |
wait(3000).then(() => console.log('Hello!')); // 'Hello!' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const double = n => n.points * 2; | |
const doubleMap = numbers => numbers.map(double); | |
console.log(doubleMap([ | |
{ name: 'ball', points: 2 }, | |
{ name: 'coin', points: 3 }, | |
{ name: 'candy', points: 4} | |
])); // [ 4, 6, 8 ] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const double = n => n * 2; | |
const doubleMap = numbers => numbers.map(double); | |
console.log(doubleMap([2, 3, 4])); // [ 4, 6, 8 ] |