javascript是单线程的执行环境,一次只能完成一件任务,如果是多个任务必须排队执行。如果因为某一任务执行时间长,经常会出现浏览器无响应(假死),整个页面卡住某个地方,其它任务无法执行。为了处理以上问题,需要使用js异步处理方法
工具/原料
1
javascript
2
浏览器
方法/步骤
1
利用setTimout实现异步,setTimout里面的函数方法,是超时回调方法,在setTimout上面的代码执行完成之后,不会立即执行回调方法,而是直接执行后面的代码,等待设置的时间超时时间到,才开始执行回调方法。通过这样的方式可以执行异步耗时时间较长的方法
3
利用script属性来实现js异步defer:当页面加载完毕以后才去执行这段代码。async:异步执行script代码新建3个js测试文件,里面分别打印test1.js,test2.js,test3.js
4
浏览器测试结果可以看出,没有添加defer和async的script引入的test3.js是最先执行的
5
动态创建script标签 var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.src = 'test1.js'; head.appendChild(script); console.log('--------------------');
6
浏览器访问测试,从控制台中可以看出'--------------------'是最后的代码,却在test1.js之前执行
注意事项
平常使用比较频繁的ajax就是异步实现最好的示例