Skip to content

Instantly share code, notes, and snippets.

@ggoodman
Created February 11, 2015 15:25
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save ggoodman/ad501f14e0bbb0849557 to your computer and use it in GitHub Desktop.
Save ggoodman/ad501f14e0bbb0849557 to your computer and use it in GitHub Desktop.
Use bluebird.js with angular.js as a replacement for $q
// bluebird.js must be loaded, exposing $window.Promise
angular.module("filearts.promise", [])
.config(["$provide", "$window", function ($provide, $window) {
$provide.decorator("$q", ["$delegate", "$rootScope", function ($delegate, $rootScope) {
var Promise = $window.Promise;
var $q = Promise;
var defer = function () {
var dfd = {};
dfd.promise = new Promise(function(_resolve, _reject) {
dfd.resolve = _resolve;
dfd.reject = _reject;
});
return dfd;
};
$q.defer = defer;
$q.when = Promise.cast;
return $q;
}]);
}])
.run(["$rootScope", "$window", function ($rootScope, $window) {
var Promise = $window.Promise;
Promise.setScheduler(function (cb) {
$rootScope.$evalAsync(cb);
});
}]);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment