javascript - 我有一个调用时会导致用户界面明显阻塞的函数,怎样通过异步编程的设计来避免阻塞?
阿神
阿神 2017-04-11 10:18:13
[JavaScript讨论组]

这个函数由click事件触发,触发后整个页面就卡住大约一秒钟才响应过来.
这个函数很普通的,没有用到别的异步操作,纯粹的数组遍历处理一些字符串.

能否通过异步编程的设计来避免这种阻塞?怎么实现?

我看了阮一峰老师博客里介绍的四种异步编程方法,但好像其实并没有能实现非阻塞的作用,就像一段评论里所言:

崔永键 说:
将耗时的操作延迟执行,貌似没有什么意义。假设f3是界面,则先执行了f3此时界面能拖动,然后settimeout之后又去执行f1,此时f3不被执行,界面又卡了。
我认为所谓的异步执行,其实是settimeout所控制的那部分时间,让js在底层开辟了新的线程去做一些IO操作了。这样才实现了f3执行的时候界面不卡顿,忽然f1底层线程的IO操作完成了则执行f2,f2执行完了又回到f3.
尼玛,底层的多线程才是所谓的异步。 这些js所谓的异步编程根本都是语法而已,只有在f1函数中使用了ajax之类的底层多线程函数,才能利用起f3执行所用的那段setTimeout时间。

对了,由于还要兼容IE8,所以不能用webworker.

阿神
阿神

闭关修行中......

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号