simple test

This commit is contained in:
2024-03-08 11:24:35 +09:00
parent c713b858c1
commit ca0bf296a6
+7
View File
@@ -117,16 +117,23 @@ export class PortRPCClient<RPCL extends RPCLists> {
public async callFunction<T extends keyof RPCL & string>(name: T, arg: Parameters<RPCL[T]>[0]): Promise<ReturnType<RPCL[T]>> { public async callFunction<T extends keyof RPCL & string>(name: T, arg: Parameters<RPCL[T]>[0]): Promise<ReturnType<RPCL[T]>> {
const id = this.prevID++; const id = this.prevID++;
let done = false;
const waiter = new Promise((resolve, reject) => { const waiter = new Promise((resolve, reject) => {
const call: RawRPCCall = [name, id, arg]; const call: RawRPCCall = [name, id, arg];
const callBuffer = ArrayBufferFromString(JSON.stringify(call)); const callBuffer = ArrayBufferFromString(JSON.stringify(call));
this.waiters.set(id, [resolve, reject]); this.waiters.set(id, [resolve, reject]);
done = true;
this.port.postMessage(callBuffer, [callBuffer]); this.port.postMessage(callBuffer, [callBuffer]);
}); });
await delay(0); await delay(0);
if(!done){
throw new Error("RPC: callFunction failed");
}
return waiter as Promise<ReturnType<RPCL[T]>>; return waiter as Promise<ReturnType<RPCL[T]>>;
} }
} }