Nonblocking asynchronous JS services
------------------------------------
Key: THRIFT-1087
URL: https://issues.apache.org/jira/browse/THRIFT-1087
Project: Thrift
Issue Type: New Feature
Components: JavaScript - Compiler, JavaScript - Library
Affects Versions: 0.6
Reporter: Henrique Mendonca
Assignee: Henrique Mendonca
The current js lib uses an ajax synchronous request, which is not very typical
for javascript. Since the current browsers' js are still single threaded, they
block the whole website until we get an answer from the server.
Current trunk:
{quote}
MyServiceClient.prototype.getMyObject = function (objectId) \{
this.send_getMyObject(objectId) //send request and wait for response
return this.recv_getMyObject() //interpret response
}
{quote}
I propose something like this: (pseudo-code + extra verbose for better
understanding)
{quote}
MyServiceClient.prototype.getMyObject = function (objectId, onSuccessHandler) \{
if ( ! onSucessHandler) \{
this.send_getMyObject(objectId) //send request and wait for response
return this.recv_getMyObject() //interpret response
} else \{
Thrift.HttpRequest.post( send_getMyObject(objectId) ); //send request
asynchronously
Thrift.HttpRequest.onreadystatechange = function () \{ onSuccessHandler(
this.recv_getMyObject() ); } //call handler on success
return Thrift.HttpRequest //return request object, as user might need to
attach an onError handler
}
}
{quote}
I think it should be something similar to the jQuery post:
http://api.jquery.com/jQuery.post/
and it will still keep the compatibility with legacy code.
Any thoughts or ideas?
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira