Skip to content

Instantly share code, notes, and snippets.

@christianalfoni
Last active July 17, 2016 20:09
Show Gist options
  • Save christianalfoni/c3b5eac48781d790a530f6e56698fe23 to your computer and use it in GitHub Desktop.
Save christianalfoni/c3b5eac48781d790a530f6e56698fe23 to your computer and use it in GitHub Desktop.
function triggerSignal (services) {
// One signal
services.signals.triggerSignal('newItemTitleChanged', {
title: 'hey'
})
.then(function () {
console.log('I resolved!');
})
// multiple signals
Promise.all([
services.signals.triggerSignal('newItemTitleChanged', {
title: 'hey'
}),
services.signals.triggerSignal('newItemTitleChanged', {
title: 'hopp'
})
])
.then(function () {
console.log('I resolved')
})
}
// Create a module
export default (module, controller) => {
const promises = {}
controller.on('signalEnd', ({options}) => {
if (promises[options.promiseId]) {
promises[options.promiseId].resolve();
delete promises[options.promiseId];
}
})
controller.on('signalError', ({options}) => {
if (promises[options.promiseId]) {
promises[options.promiseId].reject();
delete promises[options.promiseId];
}
})
module.addServices({
triggerSignal(signal, payload) {
return new Promise((resolve, reject) => {
const id = Date.now().toString()
promises[id] = {
resolve: resolve,
reject: reject
}
controller.getSignals(signal)(payload || {}, {
promiseId: id
})
})
}
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment