【发布时间】:2020-09-16 10:54:25
【问题描述】:
我试图让 Web-Worker 管理其状态,同时服务多个异步请求。
worker.ts 文件
let a =0; //this is my worker's state
let worker=self as unknown as Worker;
worker.onmessage =(e)=>{
console.log("Rec msg", e.data);
if(e.data === "+1"){
setTimeout(()=>{
a=a+1;
worker.postMessage(a);
},3000);
}else if(e.data=== "+2"){
setTimeout(()=>{
a=a+2;
worker.postMessage(a);
},1000)
}
}
这是我的主文件:main.ts
let w =new Worker("./worker.ts", {type: "module"})
let wf =async (op: string)=>{
w.postMessage(op);
return new Promise<any>((res,rej)=>{
w.onmessage=res;
});
}
(async()=>{
let f1 = await wf("+1");
console.log("f1",f1.data);
})();
(async()=>{
let f2 = await wf("+2");
console.log("f2",f2.data);
})()
只返回f2,而f1 丢失。
我已经使用超时来模拟一些工人自己完成的异步任务。
如何同时接收f1 和f2?
【问题讨论】:
标签: javascript node.js typescript web-worker deno