Skip to content

Instantly share code, notes, and snippets.

@thiagoh
Last active September 25, 2015 00:12
Show Gist options
  • Save thiagoh/d078f19794abe7565061 to your computer and use it in GitHub Desktop.
Save thiagoh/d078f19794abe7565061 to your computer and use it in GitHub Desktop.
a good example of how to use promises
var _loadPortletsData = function(page) {
var deferred = $q.defer(); // or other deferred object like jQuery.Deferred();
var promise = deferred.promise;
var count = 0;
_.map(page.columns, function(column) {
_.map(column.portlets, function(portlet) {
++count;
promise.then((function(portlet) {
_loadPortletData(portlet).then(function() {
if (--count === 0)
deferred.resolve();
}, function(reason) {
deferred.reject(reason);
});
})(portlet));
});
});
promise.then(function() {
console.log('be sure that I waited for all of them!');
});
promise.catch(function(reason) {
console.log('error! reason: ' + reason);
});
setTimeout(function() {
console.log('timeout');
deferred.reject('timeout');
}, 4000);
return promise;
};
var _loadPortletData = function(portlet) {
var uniqueId = portlet.uniqueId;
var pageOwnerUuid = $configPages.pageOwner.uuid;
var url = // some url here...;
return $http.get(url).then(function(response) {
console.log(response);
if (!response.data || !response.data.value) {
return;
}
jQuery.extend(portlet.config, response.data.value.config || {});
jQuery.extend(portlet.data, response.data.value.data || {});
}, function(response) {
});
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment