js中如何从外部中断某函数的执行??

众所周知,js是单线程的,没法保持多个函数同时运行。一直没有找到外部中断某函数运行的方法。

应用场景是:我有一个js 下棋的AI程序,AI在思考某一步棋的时间可能要花很长时间去计算(可能超过一两分钟),在这个计算过程中,整个页面都处于一个假死状态,用户点结束或退出按钮都不会有反应,造成很不好的用户体验。想找一个方法,AI在计算时,点个按钮就强行中止它的计算。一直没找到好的方法解决这个问题。

qq_笑_17
浏览 578回答 4
4回答

开满天机

这个场景,使用ServiceWorker来进行高负载运行,然后再每次循环的是时候,判断下终止变量。通过外部发消息给ServiceWorker,来设置终止变量。 // 大致思路如下 var isStop = false; function run(){   if(!isStop){     while(){} // 高负载任务,注意,把长期的任务分解下。   }   setTimeout(()=>fun()); // 通过延迟执行,才能让引擎接收外部消息 } run();

慕沐林林

刚了解了一下ServiceWorker,该功能似乎支持的浏览器不多,并且还是试用阶段,不太敢用到产品中去。 web worker倒是一个比较好的思路,以前对这方面了解得很少。初步了解它不能跟dom交互,估计要用它我的程序也要做比较大的改动,我准备做一些偿试。 两位的回答对我都很有帮助,开阔了我的思路。非常感谢!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript