一种基于多线程组件的任务处理方法及浏览器内核技术

技术编号:34823759 阅读:13 留言:0更新日期:2022-09-03 20:35
本发明专利技术提出了一种基于多线程组件的任务处理方法,包括:JS主线程调用多线程组件中构造模块通过构造函数构造worker线程;如果当前浏览器版本是否支持webworker功能,JS主线程通过所述构造函数拉起构造的worker线程,用于处理执行时间超过预设时间阈值的JS任务;如果构造worker线程的传参为JS函数,通过blob对象将待处理的JS任务中的字符串转换为成可执行的WebWorker对象,然后worker线程执行待处理的JS任务;如果构造worker线程的传参为JS脚本路径,直接调用worker线程,执行对应的待处理JS任务,本发明专利技术还提出了一种浏览器内核,有效地提高了任务处理的可靠性。地提高了任务处理的可靠性。地提高了任务处理的可靠性。

【技术实现步骤摘要】
一种基于多线程组件的任务处理方法及浏览器内核


[0001]本专利技术涉及浏览器领域,尤其是涉及一种基于多线程组件的任务处理方法及浏览器内核。

技术介绍

[0002]由于浏览器的限制,当前在浏览器进程中,JS(—种具有函数优先的轻量级,解释型或即时编译型的编程语言,经常被作为开发Web页面的脚本语言)脚本的执行是单线程的,并且JS线程与GUI(Graphical User Interface,图形用户界面)渲染线程是互斥的,当JS引擎在执行时,GUI渲染线程需要被挂起。GUI渲染线程在更新时,需要被保存在一个队列中,等待JS引擎空闲时才能执行。现在市面上主流浏览器的刷新频率为60Hz,就导致JS脚本的执行时间最好不要超过1/60秒,如果JS脚本执行时间过长,会导致浏览器卡顿,严重时可能导致浏览器崩溃,影响用户使用体验。
[0003]当前主流解决方案,一种是减少JS代码中的逻辑处理及计算量,将大量计算及处理放到后端服务器执行,再通过Ajax(是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术)技术更新界面数据;另一种是优化JS代码中执行的算法,保证在较短时间内执行完成;但是,这两种解决方案均适用于页面脚本压力较小的场景,当浏览器中存在大量JS脚本任务时,任务处理的可靠性较低,容易导致浏览器卡顿。

技术实现思路

[0004]本专利技术为了解决现有技术中存在的问题,创新提出了一种基于多线程组件的任务处理方法及浏览器内核,有效解决由于现有技术中当浏览器中存在大量JS脚本任务时,任务处理的可靠性较低,容易导致浏览器卡顿的问题,有效地提高了任务处理的可靠性。
[0005]本专利技术第一方面提供了一种基于多线程组件的任务处理方法,包括:
[0006]满足预设构造条件时,JS主线程调用多线程组件中构造模块通过构造函数构造worker线程;
[0007]判断当前浏览器版本是否支持webworker功能,如果支持,JS主线程通过所述构造函数拉起构造的worker线程,用于处理执行时间超过预设时间阈值的JS任务;
[0008]判断构造worker线程的传参类型,如果构造worker线程的传参为JS函数,JS主线程通过blob对象将待处理的JS任务中的字符串转换为成可执行的WebWorker对象,然后构造的worker线程通过可执行的WebWorker对象执行待处理的JS任务;如果构造worker线程的传参为JS脚本路径,JS主线程直接调用worker线程,执行对应的待处理JS任务。
[0009]可选地,如果当前浏览器版本不支持webworker功能,JS主线程直接执行对应的待处理JS任务。
[0010]可选地,所述多线程组件还包括通信模块,所述通信模块用于JS主线程以及构造的worker线程之间的通信。
[0011]进一步地,所述通信模块中封装有worker线程通过与JS主线程通信的方式,当
worker线程需要操作DOM节点或使用window对象的默认方法和属性时,由JS主线程操作DOM节点或使用window对象的默认方法和属性,并将执行结果以回调的方式传递回worker线程,用于实现在worker线程中操作DOM节点或使用window对象的默认方法和属性。
[0012]可选地,JS主线程通过多线程组件中的通信模块,监控构造模块构造的worker线程的运行情况。
[0013]进一步地,多线程组件中还包括错误处理模块,当JS主线程监控到worker线程运行异常或运行过程中出现错误时,调用多线程组件中的错误处理模块处理产生的错误或异常。
[0014]可选地,多线程组件中还包括关闭模块,当JS主线程监控到构造的work线程执行完待处理的JS任务后时,调用多线程组件中的关闭模块关闭执行完任务的work线程。
[0015]本专利技术第二方面提供了一种浏览器内核,包括:JS主线程以及多线程组件,所述JS主线程与多线程组件通信连接,用于在满足预设构造条件时,调用多线程组件中的构造模块通过构造函数构造worker线程;在当前浏览器版本支持webworker功能时,通过所述构造函数拉起构造的worker线程,用于处理执行时间超过预设时间阈值的JS任务;在构造worker线程的传参类型为JS函数时,JS主线程通过blob对象将待处理的JS任务中的字符串转换为成可执行的WebWorker对象,然后构造的worker线程通过可执行的WebWorker对象执行待处理的JS任务;在构造worker线程的传参类型为JS脚本路径时,JS主线程直接调用worker线程,执行对应的待处理JS任务。
[0016]可选地,所述多线程组件还包括通信模块,所述通信模块用于JS主线程以及多线程组件中构造的worker线程之间的通信,JS主线程通过多线程组件中的通信模块,监控构造模块构造的worker线程的运行情况。
[0017]进一步地,多线程组件中还包括错误处理模块以及关闭模块,当JS主线程监控到worker线程运行异常或运行过程中出现错误时,调用多线程组件中的错误处理模块处理产生的错误或异常;当JS主线程监控到构造的work线程执行完待处理的JS任务后时,调用多线程组件中的关闭模块关闭执行完任务的work线程。
[0018]本专利技术采用的技术方案包括以下技术效果:
[0019]1、本专利技术JS主线程调用多线程组件中构造模块通过构造函数构造worker线程;JS主线程通过所述构造函数拉起构造的worker线程,用于处理执行时间超过预设时间阈值的JS任务,前端开发人员可以方便的拉起worker线程来处理大计算量或大数据量的计算而不必担心由此导致的浏览器卡顿问题,有效解决由于现有技术中当浏览器中存在大量JS脚本任务时,任务处理的可靠性较低,容易导致浏览器卡顿的问题,有效地提高了任务处理的可靠性。
[0020]2、本专利技术技术方案中JS主线程通过blob对象将待处理的JS任务中的字符串转换为成可执行的WebWorker对象,然后构造的worker线程通过可执行的WebWorker对象执行待处理的JS任务,不必单独构建JS脚本,通过Blob对象转换后可直接使用普通JS函数方便的拉起worker线程,从而确保更加灵活的使用WebWorker功能,同时不受原生Web Worker组件(实现Web Worker功能)的限制,降低了Web Worker组件的使用门槛,有效避免因计算量过大导致的浏览器卡顿问题,提高了任务处理的效率。
[0021]3、本专利技术技术方案中所述多线程组件还包括通信模块,用于JS主线程以及构造的
worker线程之间的通信,所述通信模块中封装有worker线程通过与JS主线程通信的方式,由JS主线程操作DOM节点或使用window对象的默认方法和属性,并将执行结果以回调的方式传递回worker线程,由于在worker线程内不能直接操作DOM节点,也不能使用window对象的默认方法和属性,通过通信模块,实现在worker线程中操作DOM节点、使用本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于多线程组件的任务处理方法,其特征是,包括:满足预设构造条件时,JS主线程调用多线程组件中构造模块通过构造函数构造worker线程;判断当前浏览器版本是否支持webworker功能,如果支持,JS主线程通过所述构造函数拉起构造的worker线程,用于处理执行时间超过预设时间阈值的JS任务;判断构造worker线程的传参类型,如果构造worker线程的传参为JS函数,JS主线程通过blob对象将待处理的JS任务中的字符串转换为成可执行的WebWorker对象,然后构造的worker线程通过可执行的WebWorker对象执行待处理的JS任务;如果构造worker线程的传参为JS脚本路径,JS主线程直接调用worker线程,执行对应的待处理JS任务。2.根据权利要求1所述的一种基于多线程组件的任务处理方法,其特征是,如果当前浏览器版本不支持webworker功能,JS主线程直接执行对应的待处理JS任务。3.根据权利要求1所述的一种基于多线程组件的任务处理方法,其特征是,所述多线程组件还包括通信模块,所述通信模块用于JS主线程以及构造的worker线程之间的通信。4.根据权利要求3所述的一种基于多线程组件的任务处理方法,其特征是,所述通信模块中封装有worker线程通过与JS主线程通信的方式,当worker线程需要操作DOM节点或使用window对象的默认方法和属性时,由JS主线程操作DOM节点或使用window对象的默认方法和属性,并将执行结果以回调的方式传递回worker线程,用于实现在worker线程中操作DOM节点或使用window对象的默认方法和属性。5.根据权利要求3所述的一种基于多线程组件的任务处理方法,其特征是,JS主线程通过多线程组件中的通信模块,监控构造模块构造的worker线程的运行情况。6.根据权利要求5所述的一种基于多线程组件的任务处理方法,其特征是,多线程...

【专利技术属性】
技术研发人员:孙凤超
申请(专利权)人:济南浪潮数据技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1