I appreciate the brevity of the shorthand 🤷
const foo = () => ({ a: 1, b: 2 });
compare that to:
const foo = () => {
I appreciate the brevity of the shorthand 🤷
const foo = () => ({ a: 1, b: 2 });
compare that to:
const foo = () => {
/** | |
* Takes a predicate and a list of values and returns a a tuple (2-item array), | |
* with each item containing the subset of the list that matches the predicate | |
* and the complement of the predicate respectively | |
* | |
* @sig (T -> Boolean, T[]) -> [T[], T[]] | |
* | |
* @param {Function} predicate A predicate to determine which side the element belongs to. | |
* @param {Array} arr The list to partition | |
* |
// creates a new array with all sub-array elements concatenated into it recursively | |
// equivalent to array.prototype.flat with Infinity passed for depth | |
const flattenArray = (arr) => | |
arr.reduce( | |
(result, value) => result.concat( | |
Array.isArray(value) | |
? flattenArray(value) | |
: value | |
), | |
[], |
I hereby claim:
* I am zachlysobey on github. * I am zlysobey (https://keybase.io/zlysobey) on keybase. * I have a public key ASBv6iUdNuzND9RnzxBV99QvwKlaMOM-ywxoPJ7YFV1eHgo
To claim this, I am signing this object:
class AbiHelper { | |
constructor (Contract) { | |
this._abi = Contract.toJSON().abi | |
} | |
abi() { | |
return this._abi | |
} | |
publicMethodNames() { |
(function() { | |
'use strict'; | |
angular | |
.module('dkProject.quota') | |
.factory('sourceListModal', sourceListModal); | |
const modalTemplate = ` | |
<div class="source-list-modal"> |
Notes:
success
/ error
are not promise flow. They're pseudopromise demons. Use then
and catch
instead.$q.defer
is satan. You should basically never use it. There is an alternative syntax that is superior, $q(function(resolve, reject) {})
but chances are that what you’re working with already returns a promise, and if it does there is absolutely no need for either of these.promiseFn().then(successFn, errorFn)
pattern, as errorFn will only catch errors caused by promiseFn, but not by successFn. Use then(successFn).catch(errorFn)
instead.
Also note that you can chain several thenables and catch all of them this way, ala then(a).then(b).then(c).catch(errorFn)
, in which errorFn will handle errors that happen for any of a, b, or c.return
from a then-able is turned into a resolving promise. Whatever you throw
is turned into a rejecting one. For instance, `.catch(function() { | |
'use strict'; | |
angular | |
.module('myModule') | |
.directive('myDirective', myDirective); | |
const template = ` | |
<div class="my-directive-template"> | |
<h1>Using multi-line Strings for templates</h1> |
<!-- make sure to include jQuery --> | |
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> | |
<script> | |
// optional 3rd parameter is the "size" (between 0-9). Default is 5 | |
// Facebook returns several sizes; | |
// experiment with these and fine-tune with css. | |
function randomFbPhoto (el, albumId, size) { | |
var $el = $(el); // create jQuery element from css selector | |
var dataUrl = "https://graph.facebook.com/fql?q=SELECT+images,+caption,+link,+created+FROM+photo+WHERE+album_object_id+=+" + albumId + "+ORDER+BY+rand()+LIMIT+1"; |