[
https://issues.apache.org/jira/browse/SHINDIG-441?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12612696#action_12612696
]
John Hjelmstad commented on SHINDIG-441:
----------------------------------------
Technically this requires a spec change.
The spec says this about the callback function provided to gadgets.rpc.call:
"Callback function (if any) to process the return value of the RPC request."
Because the callback function is invalidated when using it asynchronously, the
return value will then be lost (or vice versa). This can be fixed in a
backward-compatible way by not removing the callback if called asynchronously,
but that sort of ruins the point of the CL.
> Asynchronous rpc handler support
> --------------------------------
>
> Key: SHINDIG-441
> URL: https://issues.apache.org/jira/browse/SHINDIG-441
> Project: Shindig
> Issue Type: New Feature
> Components: Features (Javascript)
> Reporter: Zhen Wang
>
> Currently an gadget rpc handler must be synchronous. Its return value is
> immediately passed back to the rpc caller if a callback function is defined.
> This prevents an rpc request handler to make some asynchronous calls and
> return a value later.
> Proposed solution:
> Add a callback method to the rpc context object for an rpc request handler to
> return a value asynchronously.
> This won't affect existing code. Synchronous handlers may simply ignore the
> change and return a value as usual while async handlers don't return a value
> immediately and call "this.callback(return_value);" when ready.
> Patch to rpc.js:
> 232,236d231
> < if (rpc.c) {
> < rpc.callback = function(result) {
> < gadgets.rpc.call(rpc.f, CALLBACK_NAME, null, rpc.c, result);
> < };
> < }
> 242c237
> < if (rpc.c && typeof result != 'undefined') {
> ---
> > if (rpc.c) {
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.