ICE-NODEJS SLICE to JavaScript 客户端操作

本文详细介绍了如何在JavaScript客户端使用ICE-NODEJS SLICE进行异步方法调用,包括传递参数、处理空指针、可选参数以及异步异常的语义。通过五个部分深入探讨了JavaScript中异步编程的关键概念和技术。
摘要由CSDN通过智能技术生成
AMI(Asynchronous Method Invocation)用来描述客户端支持异步编程模型。AMI支持单向和双向请求并且不会阻塞。
当客户端发起AMI请求时,ICE将消息放到传输队列后,应用就可以执行下面的代码。当请求结束时,应用会接到回调。
AMI对于服务器是透明的,对于服务器来说,同步请求和异步请求都是一样的。

一.基本异步API API  Basic Asynchronous API in JavaScript
module   Demo {
     interface   Employees {
         string   getName( int   number);
         string   getAddress( int   number);
     };
};

1.异步方法 Asynchronous Proxy Methods in JavaScript

生成js异步方法如下
EmployeesPrx.prototype.getName = function(number, __ctx) { ... }
EmployeesPrx.prototype.getAddress = function(number, __ctx) { ... }

方法的名字是一样的。
所有的异步方法,都返回一个Ice.AsyncResult类型的值。

2.传递参数 Passing Parameters in JavaScript

下边的Slice中,传递的参数有多种类型:
struct   NumberAndString {
     int   x;
     string   str;
};
sequence < string > StringSeq;
dictionary < long , StringSeq> StringTable;

interface   ClientToServer {
     void   op1( int   i,   float   f,   bool   b,   string   s);
     void   op2(NumberAndString ns, StringSeq ss, StringTable st);
     void   op3(ClientToServer* proxy);
};

生成的JS代码如下
ClientToServerPrx.prototype.op1 =   function (i, f, b, s, __ctx) { ... }
ClientToServerPrx.prototype.op2 =   function (ns, ss, st, __ctx) { ... }
ClientToServerPrx.prototype.op3 =   function (proxy, __ctx) { ... }

传递参数如下
var   p = ...;            // Get ClientToServerPrx proxy...
 
p.op1(42, 3.14,   true ,   "Hello world!" );    // Pass simple literals
 
var   i = 42;
var   f = 3.14;
var   b =   true ;
var   s =   "Hello world!" ;
p.op1(i, f, b, s);                        // Pass simple variables
 
var   ns =   new   NumberAndString();
ns.x = 42;
ns.str =   "The Answer" ;
var   ss = [];
ss.push( "Hello world!" );
var   st =   new   StringTable();
st.set(0, ss);
p.op2(ns, ss, st);                        // Pass complex variables
 
p.op3(p);                                 // Pass proxy

3.空指针Null Parameters in JavaScript

Slice中的一些类型可以定义为null,比如序列,字典,字符串,但null对这些类型来说并没有语义,和空是一样的。所以,当ICE 运行时要发送一个值为null的序列,字典,
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值