fh-wfm-mediator
Advanced tools
Comparing version 0.0.5 to 0.0.6
@@ -17,2 +17,49 @@ 'use strict'; | ||
mediator.request = function(topic, parameter, options) { | ||
var topics = {}, subs = {}, complete = false, timeout; | ||
var deferred = q.defer(); | ||
options = options || {}; | ||
topics.request = topic; | ||
topics.done = options.doneTopic || 'done:' + topic; | ||
topics.error = options.errorTopic || 'error:' + topic; | ||
if (parameter) { | ||
topics.done += ':' + parameter; | ||
topics.error += ':' + parameter; | ||
} | ||
if (!options.timeout) { | ||
options.timeout = 2000; | ||
}; | ||
var cleanUp = function() { | ||
complete = true; | ||
clearTimeout(timeout); | ||
mediator.remove(topics.done, subs.done.id); | ||
mediator.remove(topics.error, subs.error.id); | ||
}; | ||
subs.done = mediator.subscribe(topics.done, function(result) { | ||
cleanUp(); | ||
deferred.resolve(result); | ||
}); | ||
subs.error = mediator.subscribe(topics.error, function(error) { | ||
cleanUp(); | ||
deferred.reject(error); | ||
}); | ||
mediator.publish(topics.request, parameter); | ||
timeout = setTimeout(function() { | ||
if (!complete) { | ||
cleanUp(); | ||
deferred.reject(new Error('Mediator request timeout for topic ' + topic)); | ||
} | ||
}, options.timeout); | ||
return deferred.promise; | ||
}; | ||
module.exports = mediator; |
'use strict'; | ||
var angular = require('angular'); | ||
var mediator = require('./mediator'); | ||
@@ -5,0 +4,0 @@ |
{ | ||
"name": "fh-wfm-mediator", | ||
"version": "0.0.5", | ||
"version": "0.0.6", | ||
"description": "An implementation of the mediator pattern for use with WFM", | ||
@@ -5,0 +5,0 @@ "main": "ng-module.js", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
3580
57