javascript - JS 异步执行/背景执行?
伊谢尔伦
伊谢尔伦 2017-04-10 15:50:12
0
6
424

我有段代码,funA 和 funB无关系,funB是一个很耗时的加载方法,会堵塞页面.如何做到不堵塞页面,执行完funA,然后funB在背景执行

<p id="page">
    <select></select>
</p>
<p id="modal" style="disaplay:none;">
    <!--其他杂项的初始化-->
    <button>Add</button>
</p>
$(function () {
    funA();//初始化page
    funB();//初始化modal的select
});

我想要的是初始化完显示的就OK,因为modal是隐藏的,所以可以后台慢慢初始化,并且用户需要打开modal的时候才打开.不需要做到第一次打开modal时才初始化这么高级.

第一次使用segmentfault...搞到修改很多.web worker现在来说是控制不了dom.而我这不是实际要求,只是一个假设.我实际的功能是让用户选择一条已存在的数据,如何不存在就按旁边的modal来增加,但是增加的内容有点多,页面有点复杂,考虑到要用在手机上,所以我就提出这样的一个假设,看看现在有什么好的解决方法.但貌似没有实际例子,人们都不好想象和理解这问题 = =

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

Antworte allen(6)
黄舟

把b settimeout执行就可以了

左手右手慢动作

看看 Worker 吧,后台执行,主流浏览器应该都支持,IE11和Edge也支持,更高版本的浏览器没试过

http://www.w3school.com.cn/html5/html_5_webworkers.asp

左手右手慢动作

问题不太明白,
第一,是否操作同一个dom?
第二,modal不一定打开,为什么还要在初始化是去做?

刘奇

js没有多线程,所以应该做不到

巴扎黑

我很好奇,b操作你做了什么,js不做特别耗费cpu的操作是不会阻塞线程的,因为浏览器上禁止出现阻塞的,那样会导致整个js流程假死,后面的操作无法进行。。。B做了什么 能贴出来不。

大家讲道理
<p id="page">
    <select></select>
</p>
<p id="modal" style="disaplay:none;">
    <!--其他杂项的初始化-->
    <button>Add</button>
</p>
$(function () {
    funA();//初始化page
    setTimeOut(funB,0);//初始化modal的select
});
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage