Javascript多线程问题

Javascript本不具备多线程特性,看了网上许多模拟多线程序的做法,多数是将任务拆分为小任务,这样可以将处理时间较为均等地分配到每个小任务,但实际处理中任务拆分实在太难,有的甚至无法处理。下面是IE中javascript遇到的现象,一起看看。

假如要用javascript动态生成一巨型树 (不考虑节点延迟加载),用一函数来做
function CreateTree(){
  for(var i=0;i<n;i++{
    var node=document.createElement("DIV");
    node.innerText="********";
    ......
    document.body.appentChild(node);
  }
}
界面必须等函数运行结束后进行,也就是函数运行结束后才能看到界面。
如果在函数中启动定时器如:window.setTimeout 等处理界面生成问题,这些定时器的启动也是要等主函数执行完后才进行,这样看到的界面更新会大体分两面,第一步等函数处理完后,主函数处理的界面出现,下一步是定时器处理的界面出现,不过还是比全部放在主函数中处理好,因为可以把一些不重要的界面更新延迟处理(如树图中节点的连线),尽可能减少用户面对空白界面的时间。
基于单线程处理的原因,用javascript实现的进度条好像做成函数实时控制进度显示有一定的困难,因为在主函数中对进度条的所有更新需等主函数执行完以后才进行,这样只会在函数处理完以后看到进度条成为了100%而不会看到其变化过程序,失去进度条的作用,无奈只能用一GIF动画放在进度条中,让用户看一下动作,不至于太着急。
不过,IE中状态条的文字更新好象是实时进行的,有时可以充分利用一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值