游戏编程研究院pomelo 游戏开发

rpc调用之对对象的修改

2014-11-25  本文已影响149人  抓不住的风

pomelo中支持rpc调用另外一个进程中的方法,不过也需要注意一些事项.

首先rpc调用的方法是在另外一个进程中,跟当前进程完全没有关联,当前进程中的对象,不会在rpc调用的方法中被修改.

rpc调用的方法中的参数,实际上是当前进程中兑现的克隆体,虽然值是相同的,但是指向的是两个不同的对象,指针不同. 

不要想当然的认为,当前对象传递过去,然后对其进行修改,就能真正的改变他的值.

说的可能不清楚,还是举例子说一下吧.

DataHandler.prototype.changeObjValue =  function(charInfo,cb){

        var app = this.app;

        var charInfo = {id :1,name :'XXX'};

        app.rpc.data.dataRemote.changeValue(global,charInfo,function(err,newInfo){

                console.log(newInfo);//charInfo 值没有改变{id :1,name :'XXX'}

                charInfo = newInfo; 将克隆体的修改重新赋值给原来的对象 即可更新

                console.log(newInfo);//charInfo 值 :{id :1,name :'XXX', age:100}

        });

}

DataRemote.prototype.changeValue = function(charInfo,cb){

        if(!!charInfo){//此时charInfo 是传递过来的charInfo的克隆体,不再是同一对象

            charInfo.age = 100;

        }

        cb( null, charInfo );

}

上一篇 下一篇

猜你喜欢

热点阅读