rpc调用之对对象的修改

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

首先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 );

}

    原文作者:抓不住的风
    原文地址: https://www.jianshu.com/p/b660b4ddc52c
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞