Details
-
Sub-task
-
Status: Closed
-
Major
-
Resolution: Fixed
-
0.6
-
None
Description
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:
MyServiceClient.prototype.getMyObject = function (objectId) {
this.send_getMyObject(objectId) //send request and wait for response
return this.recv_getMyObject() //interpret response
}
I propose something like this: (pseudo-code + extra verbose for better understanding)
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
}
}
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?