Skip to content

Instantly share code, notes, and snippets.

View benjamingr's full-sized avatar
🖊️
Limited availability.

Benjamin Gruenbaum benjamingr

🖊️
Limited availability.
View GitHub Profile
Entity._save = Promise.promisify(Item.prototype.save);
Entity.prototype._create = Promise.method(function(itemData) {
if (!this.Model) throw new Error('No Mongoose.Model defined, use setModel()');
var item = new this.Model(itemData);
return Entity._save.apply(item);
});
<ul>
<li ng-repeat="Rating in Ratings | restrict: 'ratingHistory'" ng-click="showRating(Rating)" ng-class="Rating.rating" analytics="clicked-on-Rating-History" analytics-props="Rating.analyticsProps" >
<!--- ... --->
<div class="more-info" ng-show="Rating.show">
<!--- ... --->
<d3overview stock="Rating.stock" show-legend="false" show-duration="false" show-recommendations="true" />
</div>
</li>
</ul>
@benjamingr
benjamingr / gist:10536349
Created April 12, 2014 13:40
Bluebird asParallel
Promise.longStackTraces();
//end debug
/**
Hijack Promise.map to accept parallelism limit argument
**/
function queueConcurrent(work, degreeOfParallelism) {
// work is array of functions returning promises
"use strict";
[{"name":"11(None)","parent":"null"},{"name":"False","parent":"11(None)"},{"name":"2(None)","parent":"11(None)"},{"name":"True","parent":"2(None)"},{"name":"False","parent":"2(None)"},{"name":"False","parent":"11(None)"},{"name":"8(None)","parent":"null"},{"name":"False","parent":"8(None)"},{"name":"True","parent":"8(None)"},{"name":"6(None)","parent":"8(None)"},{"name":"True","parent":"6(None)"},{"name":"False","parent":"6(None)"},{"name":"False","parent":"6(None)"},{"name":"10(None)","parent":"null"},{"name":"14(None)","parent":"10(None)"},{"name":"2(None)","parent":"14(None)"},{"name":"True","parent":"2(None)"},{"name":"15(None)","parent":"2(None)"},{"name":"0(None)","parent":"15(None)"},{"name":"False","parent":"0(None)"},{"name":"True","parent":"0(None)"},{"name":"True","parent":"15(None)"},{"name":"True","parent":"14(None)"},{"name":"9(None)","parent":"14(None)"},{"name":"15(None)","parent":"9(None)"},{"name":"True","parent":"15(None)"},{"name":"1(None)","parent":"15(None)"},{"name":"False","parent":"1(
// returns a version of a given promise returning function fn that always uses the same cached value
function once(fn){
var called = false, cache = null;
return function cachedPromise(){
if(called) return cache;
cache = fn.apply(this,arguments);
called = true;
return cache;
};
}
function ResourceBuilder(){
this._dependencies = [];
}
ResourceBuilder.prototype.addDependency = function(dep){
this._dependencies.add(dep);
}
ResourceBuilder.protototype.get = function(){
var loadPromises = this._dependencies.map(loadDependency); // alternatively, dependencies could be promises already
return Promise.all(loadPromises).then(function(loadedResourcesArray){
@benjamingr
benjamingr / gist:0ed038727f38fb77e7ee
Created May 20, 2014 23:10
Resolve a dependency recursively based on .needs
// this will load a script, I assume each dependency contains what it needs inside
// `dependency.needs` and we'll load that.
//
// stuff is called script here, but it could also be a stylesheet or whatever.
//
// Since when we return a promise from a `.then` it unwraps and runs the promise we return, we can
// return a promise for the values of our _own_ dependencies, and continue doing so, promises will
// unwrap everything for us.
//
// This does not do have the same `.addDependency` interface from before, it's just a function to show
class Foo<A,B>{
var bar:[(A,B)] = [(A,B)]() // why is this invalid?
}
//
// Promise.swift
// Promise
//
// Created by Benjamin Gruenbaum on 8/12/14.
// Copyright (c) 2014 Tipranks. All rights reserved.
//
import Foundation
@benjamingr
benjamingr / gist:5b42be523b7f313a79b7
Created August 12, 2014 09:10
lol, promise constructor
//
// Promise.swift
// Promise
//
// Created by Benjamin Gruenbaum on 8/12/14.
// Copyright (c) 2014 Tipranks. All rights reserved.
//
import Foundation