[ https://issues.apache.org/jira/browse/THRIFT-1087?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13016414#comment-13016414 ]
Henrique Mendonca commented on THRIFT-1087: ------------------------------------------- Hi Jake, Do you mean something like that: {noformat} jqRequest: function(client, postData, args, recv_method) { + if (typeof jQuery === 'undefined' || typeof jQuery.Deferred === 'undefined') { + throw 'Thrift.js requires jQuery 1.5+ to use asynchronous requests'; + } + {noformat} At the moment we only get something like: {noformat} 'jQuery'/'jQuery.Deferred' is undefined URI: /js/lib/thrift.js {noformat} And I have to agree with you that this is not very informative. Shall I add this and Roger's change to the patch? Cheers > Nonblocking asynchronous JS services > ------------------------------------ > > Key: THRIFT-1087 > URL: https://issues.apache.org/jira/browse/THRIFT-1087 > Project: Thrift > Issue Type: Sub-task > Components: JavaScript - Compiler, JavaScript - Library > Affects Versions: 0.6 > Reporter: Henrique Mendonca > Assignee: Henrique Mendonca > Labels: javascript, thrift > Attachments: THRIFT-1087-jquery-async-qunit.patch > > 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