1# Changelog 2##### Key API/Component Changes 3## IPC Subsystem 4#### cl.rpc.1 sendRequest Return Value Type Change 5 6##### Change Impact 7 8The **sendRequest** method in the JS modules **RemoteProxy** and **RemoteObject** is changed to an asynchronous interface. The new version uses a **Promise** object to return a **SendRequestResult** instance. Existing applications need to be adapted. 9 10##### Key API/Component Changes 11 12``` 13Module: ohos.rpc.IRemoteObject, ohos.rpc.RemoteProxy and ohos.rpc.RemoteObject 14Old method: sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): boolean 15 16New method: 17sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): Promise<SendRequestResult> 18``` 19 20**Adaptation Guidelines** 21 22``` 23import rpc from "@ohos.rpc" 24import FA from "@ohos.ability.featureAbility"; 25 26let proxy; 27let connect = { 28 onConnect: function(elementName, remoteProxy) { 29 console.log("RpcClient: js onConnect called."); 30 proxy = remoteProxy; 31 }, 32 onDisconnect: function(elementName) { 33 console.log("RpcClient: onDisconnect"); 34 }, 35 onFailed: function() { 36 console.log("RpcClient: onFailed"); 37 } 38}; 39let want = { 40 "bundleName": "com.ohos.server", 41 "abilityName": "com.ohos.server.MainAbility", 42}; 43FA.connectAbility(want, connect); 44 45let option = new rpc.MessageOption() 46let data = rpc.MessageParcel.create() 47let reply = rpc.MessageParcel.create() 48proxy.sendRequest(1, data, reply, option) 49 .then(function(result) { 50 console.info("send request done") 51 if (result.errCode === 0) { 52 // read result from result.reply 53 } 54 }) 55 .catch(function(e) { 56 console.error("send request failed: " + e) 57 }) 58 .finally(() => { 59 data.reclaim() 60 reply.reclaim() 61 }) 62``` 63