Implement asynchronous message exchange
Level: intermediate
Example
Implement asynchronous exchange among the modules.
-
Set the configuration object as a parameter of the handler function in the module that publishes the message.
-
Add a callback function to the configuration object.
Example that publishes messages and retrieves the result...
this.sandbox.publish("AsyncMessageResult",
/* Configuration object specified as a handler function parameter. */
{
/* Callback function. */
callback: function(result) {
this.Terrasoft.showInformation(result);
},
/* Scope of the callback function execution. */
scope: this
});
... -
Return asynchronous result in the handler method of the subscriber module the module subscribes to a message. Use the callback function parameter of the published message.
Example that subscribes to a message...
this.sandbox.subscribe("AsyncMessageResult",
/* Message handler function. */
function(config) {
/* Handle the incoming parameter. */
var config = config || {};
var callback = config.callback;
var scope = config.scope || this;
/* Prepare the resulting message. */
var result = "Message from callback function";
/* Execute the callback function. */
if (callback) {
callback.call(scope, result);
}
},
/* Execution scope of the message handler function. */
this);
...