Skip to content

Instantly share code, notes, and snippets.

@leszekgruchala
Last active November 18, 2015 01:07
Show Gist options
  • Save leszekgruchala/9600637 to your computer and use it in GitHub Desktop.
Save leszekgruchala/9600637 to your computer and use it in GitHub Desktop.
DWR request wrapped by Promise
/**
* Creates promise object for DWR async calls.
* @param dwrFunc DWR function to be invoked
* @param arrayOfParameters [optional] parameters of given DWR function
* @returns {Q.promise}
*/
function qDwr(dwrFunc, arrayOfParameters) {
var deferred = Q.defer();
if (arrayOfParameters === undefined || arrayOfParameters === null) {
arrayOfParameters = [];
}
arrayOfParameters.push(function(data) {
deferred.notify();
if (data.faulty) {
deferred.reject(data);
} else {
deferred.resolve(data.data);
}
});
dwrFunc.apply(this, arrayOfParameters);
return deferred.promise;
}
var _provideAgreements = function() {
Q.all([qDwr(Remote.provideMarketingAgreements),
qDwr(Remote.provideAdditionalAgreements),
qDwr(Remote.provideOtherAgreements)])
.spread(function(marketing, additional, other) {
function render(agreements, element) {
var viewData = {
"agreements": agreements
}
var renderedTemplate = $.Mustache.render(_cfg.id.template.agreements, viewData);
$(element).html(renderedTemplate);
}
render(marketing, _cfg.id.container.marketing);
render(additional, _cfg.id.container.additional);
render(other, _cfg.id.container.other);
})
.catch(function(error) {
window.alert(error);
})
.done(function() {
console.log("I'm done");
});
}
@ripper2hl
Copy link

example for this ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment