Pierre Lamot created THRIFT-2376:
------------------------------------
Summary: nodejs: allow Promise style calls for client and server
Key: THRIFT-2376
URL: https://issues.apache.org/jira/browse/THRIFT-2376
Project: Thrift
Issue Type: Improvement
Components: Node.js - Compiler
Affects Versions: 0.9.2
Reporter: Pierre Lamot
the idea of this patch is to allow writing server functions and clients calls
using future/promise style.
for instance a server function:
{code:javascript}
{
divide: function(n1, n2, result) {
if (n2 === 0) {
var x = new ttypes.InvalidOperation();
result(x);
return;
}
result(null, n1/n2);
}
}
{code}
might be written as:
{code:javascript}
{
divide: function(n1, n2) {
if (n2 === 0) {
throw new ttypes.InvalidOperation();
}
return n1/n2;
}
}
{code}
both style remains valid, the style to use is detected according to the
function signature (is there a last argument for the callback).
when using promise style, a promise can also be return in stead of the result
for asynchronous results.
the client side might use promise as well:
{code:javascript}
client.calculate(1, work, function(err, message) {
if (err) {
console.log("InvalidOperation " + err);
} else {
console.log('Whoa? You know how to divide by zero?');
}
});
{code}
might be written as:
{code:javascript}
client.calculate(1, work)
.then(function(message) {
console.log('Whoa? You know how to divide by zero?');
})
.fail(function(err) {
console.log("InvalidOperation " + err);
});
{code}
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)