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)

Reply via email to