谈论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是常见的。但我们希望本文的内容能对您有所帮助。