众所周知,js是单线程的,没法保持多个函数同时运行。一直没有找到外部中断某函数运行的方法。应用场景是:我有一个js 下棋的AI程序,AI在思考某一步棋的时间可能要花很长时间去计算(可能超过一两分钟),在这个计算过程中,整个页面都处于一个假死状态,用户点结束或退出按钮都不会有反应,造成很不好的用户体验。想找一个方法,AI在计算时,点个按钮就强行中止它的计算。一直没找到好的方法解决这个问题。
2 回答
Qyouu
TA贡献1786条经验 获得超11个赞
这个场景,使用ServiceWorker来进行高负载运行,然后再每次循环的是时候,判断下终止变量。通过外部发消息给ServiceWorker,来设置终止变量。
// 大致思路如下var isStop = false;function run(){ if(!isStop){ while(){} // 高负载任务,注意,把长期的任务分解下。 } setTimeout(()=>fun()); // 通过延迟执行,才能让引擎接收外部消息} run();
添加回答
举报
0/150
提交
取消