为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

幕布斯7119047 2018-10-19 14:14:43
众所周知,js是单线程的,没法保持多个函数同时运行。一直没有找到外部中断某函数运行的方法。应用场景是:我有一个js 下棋的AI程序,AI在思考某一步棋的时间可能要花很长时间去计算(可能超过一两分钟),在这个计算过程中,整个页面都处于一个假死状态,用户点结束或退出按钮都不会有反应,造成很不好的用户体验。想找一个方法,AI在计算时,点个按钮就强行中止它的计算。一直没找到好的方法解决这个问题。
查看完整描述

2 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

这个场景,使用ServiceWorker来进行高负载运行,然后再每次循环的是时候,判断下终止变量。通过外部发消息给ServiceWorker,来设置终止变量。

// 大致思路如下var isStop = false;function run(){
  if(!isStop){
    while(){} // 高负载任务,注意,把长期的任务分解下。  }
  setTimeout(()=>fun()); // 通过延迟执行,才能让引擎接收外部消息}
run();


查看完整回答
反对 回复 2018-10-31
  • 2 回答
  • 0 关注
  • 1157 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信