谈论Javascript中的异步和异步
为什么它需要异步为什么看一段代码。问题1:
对于(var i = 0;i < 100000;i + +){
}
警报('Hello World!!!!);
此代码的含义是在执行后100次执行警报。问题是它严重地阻碍了代码的执行。为什么,主要是因为JS是单线的。
问题2:
我们通常得解决这个问题。如果我们需要添加脚本代码为头,我们通常写的代码在window.onload(如果我们操作DOM),你有没有想过为什么我们需要添加在window.onload原因是当你操作DOM脚本,后面没有HTML代码的浏览器开始加载,所以很有可能你还没有在你结婚前她出生的。当然,这是不可能的,加窗,载的原因是在在window.onload代码的文件满负荷后执行,相当于异步。
问题3:
有时页面不必一次性加载所有代码,而更多的时候我们根据一定的需求加载特定的代码。
什么是单线
您可以理解,单个线程是代码一部分的执行。首先,执行前面,执行前执行。
js中的异步是什么
我相信这件事,几乎都用了,这当然是setTimeout和setInterval和Ajax,Ajax异步我相信大家都知道,当然,也可以同步,但是没有人这样做,但是setTimeout和setInterval是异步的可能有一些朋友不同的解决方法,在这里谈谈为什么setTimeout是异步的。
setTimeout(){()函数(
(0)console.log;
},0)
(1)console.log;
1
0
运行代码后的第一次印刷是1,不是0,一些朋友开始怀疑,在这里,虽然我们把它放在console.log setTimeout进行0秒后(0),但将是非常特殊的,因为它是异步的,我们抛开这里是什么然后打印1 0是说话什么是异步的。
什么是异步的
例如,一些餐馆吃你需要提前预订,你可以去吃其他的人,所以当其他人吃,你可以做其他的事情,其他人将完成的通知你,你可以去,然后代码,如Ajax,你定义一个回调的回调方法不当时执行,但执行这段代码完成后等待服务器的响应会去。
我们回到前面的setTimeout,其工作原理是,当你定义的setTimeout的时刻(无论是否0次),JS没有直接去执行的代码,但扔到事件队列中的所有任务,当页面执行事件队列的同步完成后,里面的代码。什么是同步、异步码同步是除- _—。
js是如何实现异步的
1。使用settimout实现异步
setTimeout(){()函数(
console.log(document.getelementbytagname('body){ 0 });
},0)
但是setTimeout有些小问题,那就是,时间是不准确的。如果你想要执行的代码的速度,我们可以使用函数提供的HTML5,U3000 U3000
RequestAnimationFrame(function(){()
console.log(document.getelementbytagname('body){ 0 });
})
requestanimationframe和setTimeout的区别是,requestanimationframe执行速度比setTimeout,所以很多人使用requestanimationframe做动画。
U3000 U3000
2。动态创建脚本标记
VaR的头= document.getelementbytagname(很){ 0 };
VaR脚本= document.createelement('script);
script.src =梦Js的儿子;
head.appendchild('script);
三.延迟/脚本异步提供
延迟:在加载页面时执行此代码吗。
U3000 U3000
异步:异步执行的脚本代码
U3000 U3000
但是异步也是一个缺点,如下面的代码:
正常的代码:
尝试{
把新的错误('Hello World);
} catch(错误){
console.log(ERR);
}
你好(世界错误…)
异步代码:
尝试{
settimout(函数(){()
把新的错误('Hello World);
},0)
} catch(错误){
console.log(ERR);
}
settimout不是(定义 / / referenceerror…)
您可以发现,内部代码捕获没有执行,也就是说,尝试无法捕获异步代码。
总结
关于JS中的异步和异步,这基本上结束了。异步js是常见的。但我们希望本文的内容能对您有所帮助。