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