目录

Can data be returned asynchronously in Inter-Process Communication (IPC)?

To return data asynchronously, set async in onRemoteMessageRequest() of the server. For details, see the code example of overloading onRemoteMessageRequest to process requests asynchronously.

Sample code:

import { rpc } from '@kit.IPCKit';

class TestRemoteObject extends rpc.RemoteObject {
  constructor(descriptor: string) {
    super(descriptor);
  }

  async onRemoteMessageRequest(code: number, data: rpc.MessageSequence, reply: rpc.MessageSequence, option: rpc.MessageOption): Promise<boolean> {
    if (code === 1) {
      console.log("RpcServer: async onRemoteMessageRequest is called");
    } else {
      console.log("RpcServer: unknown code: " + code);
      return false;
    }
    await new Promise((resolve: (data: rpc.RequestResult) => void) => {
      setTimeout(resolve, 100);
    })
    return true;
  }
}

Reference

IPC and RPC Development