diff --git a/en/application-dev/reference/apis/js-apis-rpc.md b/en/application-dev/reference/apis/js-apis-rpc.md
index fe414f5d9f4b180cc36d1dbb3c36889924d3840c..ae0847a588b0d66d4e75f19353f2ca98d89cb3c8 100644
--- a/en/application-dev/reference/apis/js-apis-rpc.md
+++ b/en/application-dev/reference/apis/js-apis-rpc.md
@@ -873,7 +873,7 @@ Writes a String value to this **MessageParcel** object.
**Parameters**
| Name| Type| Mandatory| Description|
| -------- | -------- | -------- | -------- |
- | val | string | Yes| String value to write.|
+ | val | string | Yes| String value to write. The length of the value must be less than 40960 bytes.|
**Return value**
| Type| Description|
@@ -1322,7 +1322,7 @@ Writes a FloatArray to this **MessageParcel** object.
**Parameters**
| Name| Type| Mandatory| Description|
| -------- | -------- | -------- | -------- |
- | floatArray | number[] | Yes| FloatArray to write.|
+ | floatArray | number[] | Yes| FloatArray to write. The system processes Float data as that of the Double type. Therefore, the total number of bytes occupied by a FloatArray must be calculated as the Double type.|
**Return value**
| Type| Description|
@@ -1349,7 +1349,7 @@ Reads a FloatArray from this **MessageParcel** object.
**Parameters**
| Name| Type| Mandatory| Description|
| -------- | -------- | -------- | -------- |
- | dataIn | number[] | Yes| FloatArray to read.|
+ | dataIn | number[] | Yes| FloatArray to read. The system processes Float data as that of the Double type. Therefore, the total number of bytes occupied by a FloatArray must be calculated as the Double type.|
**Example**
@@ -1622,7 +1622,7 @@ Writes a StringArray to this **MessageParcel** object.
**Parameters**
| Name| Type| Mandatory| Description|
| -------- | -------- | -------- | -------- |
- | stringArray | string[] | Yes| StringArray to write.|
+ | stringArray | string[] | Yes| StringArray to write. The length of a single element in the array must be less than 40960 bytes.|
**Return value**
| Type| Description|
@@ -1764,20 +1764,20 @@ Reads the exception information from this **MessageParcel** object.
let reply = rpc.MessageParcel.create();
data.writeInt(1);
data.writeString("hello");
- proxy.sendRequest(1, data, reply, option)
+ proxy.sendRequestAsync(1, data, reply, option)
.then(function(errCode) {
if (errCode === 0) {
- console.log("sendRequest got result");
+ console.log("sendRequestAsync got result");
reply.readException();
let msg = reply.readString();
console.log("RPCTest: reply msg: " + msg);
} else {
- console.log("RPCTest: sendRequest failed, errCode: " + errCode);
+ console.log("RPCTest: sendRequestAsync failed, errCode: " + errCode);
}
}).catch(function(e) {
- console.log("RPCTest: sendRequest got exception: " + e.message);
+ console.log("RPCTest: sendRequestAsync got exception: " + e.message);
}).finally (() => {
- console.log("RPCTest: sendRequest ends, reclaim parcel");
+ console.log("RPCTest: sendRequestAsync ends, reclaim parcel");
data.reclaim();
reply.reclaim();
});
@@ -2504,7 +2504,7 @@ Obtains the interface.
### sendRequest(deprecated)
> **NOTE**
-> This API is deprecated since API Version 8. You are advised to use [sendRequest8+](#sendrequest8).
+> This API is deprecated since API Version 8. You are advised to use [sendRequestAsync9+](#sendrequestasync9).
sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): boolean
@@ -2526,7 +2526,10 @@ Sends a **MessageParcel** message to the remote process in synchronous or asynch
| boolean | Returns **true** if the operation is successful; returns **false** otherwise.|
-### sendRequest8+
+### sendRequest8+(deprecated)
+
+> **NOTE**
+> This API is deprecated since API Version 9. You are advised to use [sendRequestAsync9+](#sendrequestasync9).
sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): Promise<SendRequestResult>
@@ -2534,6 +2537,27 @@ Sends a **MessageParcel** message to the remote process in synchronous or asynch
**System capability**: SystemCapability.Communication.IPC.Core
+**Parameters**
+ | Name| Type| Mandatory| Description|
+ | -------- | -------- | -------- | -------- |
+ | code | number | Yes| Message code called by the request, which is determined by the client and server. If the method is generated by an IDL tool, the message code is automatically generated by the IDL tool.|
+ | data | [MessageParcel](#messageparcel) | Yes| **MessageParcel** object holding the data to send.|
+ | reply | [MessageParcel](#messageparcel) | Yes| **MessageParcel** object that receives the response.|
+ | options | [MessageOption](#messageoption) | Yes| Request sending mode, which can be synchronous (default) or asynchronous.|
+
+**Return value**
+ | Type| Description|
+ | -------- | -------- |
+ | Promise<SendRequestResult> | Promise used to return the **sendRequestResult** object.|
+
+### sendRequestAsync9+
+
+sendRequestAsync(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): Promise<SendRequestResult>
+
+Sends a **MessageParcel** message to the remote process in synchronous or asynchronous mode. If **options** is the asynchronous mode, a promise will be fulfilled immediately and the reply message does not contain any content. If **options** is the synchronous mode, a promise will be fulfilled when the response to **sendRequestAsync** is returned, and the reply message contains the returned information.
+
+**System capability**: SystemCapability.Communication.IPC.Core
+
**Parameters**
| Name| Type| Mandatory| Description|
| -------- | -------- | -------- | -------- |
@@ -2653,7 +2677,7 @@ Provides methods to implement **IRemoteObject**.
### sendRequest(deprecated)
> **NOTE**
-> This API is deprecated since API Version 8. You are advised to use [sendRequest8+](#sendrequest8-2).
+> This API is deprecated since API Version 8. You are advised to use [sendRequestAsync9+](#sendrequestasync9-1).
sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): boolean
@@ -2715,7 +2739,10 @@ Sends a **MessageParcel** message to the remote process in synchronous or asynch
reply.reclaim();
```
-### sendRequest8+
+### sendRequest8+(deprecated)
+
+> **NOTE**
+> This API is deprecated since API Version 9. You are advised to use [sendRequestAsync9+](#sendrequestasync9-1).
sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): Promise<SendRequestResult>
@@ -2782,6 +2809,72 @@ Sends a **MessageParcel** message to the remote process in synchronous or asynch
});
```
+### sendRequestAsync9+
+
+sendRequestAsync(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): Promise<SendRequestResult>
+
+Sends a **MessageParcel** message to the remote process in synchronous or asynchronous mode. If **options** is the asynchronous mode, a promise will be fulfilled immediately and the reply message does not contain any content. If **options** is the synchronous mode, a promise will be fulfilled when the response to **sendRequestAsync** is returned, and the reply message contains the returned information.
+
+**System capability**: SystemCapability.Communication.IPC.Core
+
+**Parameters**
+ | Name| Type| Mandatory| Description|
+ | -------- | -------- | -------- | -------- |
+ | code | number | Yes| Message code called by the request, which is determined by the client and server. If the method is generated by an IDL tool, the message code is automatically generated by the IDL tool.|
+ | data | [MessageParcel](#messageparcel) | Yes| **MessageParcel** object holding the data to send.|
+ | reply | [MessageParcel](#messageparcel) | Yes| **MessageParcel** object that receives the response.|
+ | options | [MessageOption](#messageoption) | Yes| Request sending mode, which can be synchronous (default) or asynchronous.|
+
+**Return value**
+ | Type| Description|
+ | -------- | -------- |
+ | Promise<SendRequestResult> | Promise used to return the **sendRequestResult** object.|
+
+**Example**
+
+ ```
+ import FA from "@ohos.ability.featureAbility";
+ let proxy;
+ let connect = {
+ onConnect: function(elementName, remoteProxy) {
+ console.log("RpcClient: js onConnect called.");
+ proxy = remoteProxy;
+ },
+ onDisconnect: function(elementName) {
+ console.log("RpcClient: onDisconnect");
+ },
+ onFailed: function() {
+ console.log("RpcClient: onFailed");
+ }
+ };
+ let want = {
+ "bundleName": "com.ohos.server",
+ "abilityName": "com.ohos.server.MainAbility",
+ };
+ FA.connectAbility(want, connect);
+ let option = new rpc.MessageOption();
+ let data = rpc.MessageParcel.create();
+ let reply = rpc.MessageParcel.create();
+ data.writeInt(1);
+ data.writeString("hello");
+ proxy.sendRequestAsync(1, data, reply, option)
+ .then(function(result) {
+ if (result.errCode === 0) {
+ console.log("sendRequestAsync got result");
+ result.reply.readException();
+ let msg = result.reply.readString();
+ console.log("RPCTest: reply msg: " + msg);
+ } else {
+ console.log("RPCTest: sendRequestAsync failed, errCode: " + result.errCode);
+ }
+ }).catch(function(e) {
+ console.log("RPCTest: sendRequestAsync got exception: " + e.message);
+ }).finally (() => {
+ console.log("RPCTest: sendRequestAsync ends, reclaim parcel");
+ data.reclaim();
+ reply.reclaim();
+ });
+ ```
### sendRequest8+
@@ -3082,7 +3175,7 @@ Provides common message options (flag and wait time). The flag is used to constr
| -------- | -------- | -------- |
| TF_SYNC | 0 | Synchronous call.|
| TF_ASYNC | 1 | Asynchronous call.|
-| TF_ACCEPT_FDS | 0x10 | Indication to the [sendRequest](#sendrequest8) API for returning the file descriptor.|
+| TF_ACCEPT_FDS | 0x10 | Indication to [sendRequestAsync](#sendrequestasync9) for returning the file descriptor.|
| TF_WAIT_TIME | 8 | Time to wait, in seconds.|
@@ -3471,7 +3564,7 @@ A constructor used to create a **RemoteObject** object.
### sendRequest(deprecated)
> **NOTE**
-> This API is deprecated since API Version 8. You are advised to use [sendRequest8+](#sendrequest8-4).
+> This API is deprecated since API Version 8. You are advised to use [sendRequestAsync9+](#sendrequestasync9-2).
sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): boolean
@@ -3535,7 +3628,10 @@ Sends a **MessageParcel** message to the remote process in synchronous or asynch
```
-### sendRequest8+
+### sendRequest8+(deprecated)
+
+> **NOTE**
+> This API is deprecated since API Version 9. You are advised to use [sendRequestAsync9+](#sendrequestasync9-2).
sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): Promise<SendRequestResult>
@@ -3604,6 +3700,73 @@ Sends a **MessageParcel** message to the remote process in synchronous or asynch
});
```
+### sendRequestAsync9+
+
+sendRequestAsync(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): Promise<SendRequestResult>
+
+Sends a **MessageParcel** message to the remote process in synchronous or asynchronous mode. If **options** is the asynchronous mode, a promise will be fulfilled immediately and the reply message does not contain any content. If **options** is the synchronous mode, a promise will be fulfilled when the response to **sendRequestAsync** is returned, and the reply message contains the returned information.
+
+**System capability**: SystemCapability.Communication.IPC.Core
+
+**Parameters**
+ | Name| Type| Mandatory| Description|
+ | -------- | -------- | -------- | -------- |
+ | code | number | Yes| Message code called by the request, which is determined by the client and server. If the method is generated by an IDL tool, the message code is automatically generated by the IDL tool.|
+ | data | [MessageParcel](#messageparcel) | Yes| **MessageParcel** object holding the data to send.|
+ | reply | [MessageParcel](#messageparcel) | Yes| **MessageParcel** object that receives the response.|
+ | options | [MessageOption](#messageoption) | Yes| Request sending mode, which can be synchronous (default) or asynchronous.|
+
+**Return value**
+ | Type| Description|
+ | -------- | -------- |
+ | Promise<SendRequestResult> | Promise used to return the **sendRequestResult** object.|
+
+**Example**
+
+ ```
+ class MyDeathRecipient {
+ onRemoteDied() {
+ console.log("server died");
+ }
+ }
+ class TestRemoteObject extends rpc.RemoteObject {
+ constructor(descriptor) {
+ super(descriptor);
+ }
+ addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
+ return true;
+ }
+ removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
+ return true;
+ }
+ isObjectDead(): boolean {
+ return false;
+ }
+ }
+ let testRemoteObject = new TestRemoteObject("testObject");
+ let option = new rpc.MessageOption();
+ let data = rpc.MessageParcel.create();
+ let reply = rpc.MessageParcel.create();
+ data.writeInt(1);
+ data.writeString("hello");
+ testRemoteObject.sendRequestAsync(1, data, reply, option)
+ .then(function(result) {
+ if (result.errCode === 0) {
+ console.log("sendRequestAsync got result");
+ result.reply.readException();
+ let msg = result.reply.readString();
+ console.log("RPCTest: reply msg: " + msg);
+ } else {
+ console.log("RPCTest: sendRequestAsync failed, errCode: " + result.errCode);
+ }
+ }).catch(function(e) {
+ console.log("RPCTest: sendRequestAsync got exception: " + e.message);
+ }).finally (() => {
+ console.log("RPCTest: sendRequestAsync ends, reclaim parcel");
+ data.reclaim();
+ reply.reclaim();
+ });
+ ```
### sendRequest8+
@@ -3672,7 +3835,7 @@ Sends a **MessageParcel** message to the remote process in synchronous or asynch
onRemoteRequest(code : number, data : MessageParcel, reply: MessageParcel, options : MessageOption): boolean
-Provides a response to **sendRequest()**. The server processes the request and returns a response in this function.
+Provides a response to **sendRequestAsync()**. The server processes the request and returns a response in this function.
**System capability**: SystemCapability.Communication.IPC.Core