[
https://issues.apache.org/jira/browse/THRIFT-1087?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13004493#comment-13004493
]
Henrique Mendonca commented on THRIFT-1087:
-------------------------------------------
{quote}
*Performance Note* When _bAsync_ is set to false, *send* operations are
synchronous, and Windows Internet Explorer does not accept input or produce
output while *send* operations are in progress. Therefore, this setting should
not be used in situations where it is possible for a user to be waiting on the
*send* operation to complete.
{quote}
_From MSDN:_ http://msdn.microsoft.com/en-us/library/ms536648%28v=vs.85%29.aspx
The same happens with most of the current browsers
> 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
> Labels: javascript, thrift
> Original Estimate: 168h
> Remaining Estimate: 168h
>
> 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