simple test
This commit is contained in:
@@ -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]>>;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user