新手笔记:es6中的异步。

第一次写博客总结我这几天学到的一点小知识,如果我的文章有幸被诸君看到,还是不要笑话我_
其实在es6中,像我这中新手总是头疼,哪些代码块是现在执行,那些代码块是未来执行。这几天看了很多资料,从中用自己的话总结一下。

事实上像setTimeout这种函数,我们在使用时就很清楚的知道,其中的参数,也就是设置好多少ms以后要执行的函数,是未来才执行的代码块。从中也同时引出了异步的这一概念。
这几天最大的收获来自于《你不知道的javascript》中卷中得一段话:
"任何时候,只要把一段代码包装成一个函数,并指定它在响应某个事件(定时器,鼠标点击,ajax相应、、响应等)时执行,你就是在代码中创建了一个将来执行的块,也由此在这个程序中引入了异步机制"
真是醍醐灌顶啊。哈哈哈
所以我的一点小见解就是:所谓的异步操作其实是利用时间差去执行某些代码

而为什么会有时间差存在呢,由于javascript是一种单线程的编程语言(虽说在html5中的 web worker中允许了js创建多个线程,但是子线程都受主线程的控制),那么在线程执行一些很拖沓的操作时(比如IO),我们的硬件设施总是响应很慢。所以线程需要去先执行之后的代码,等待 线程的回调。

这些同步执行的代码,是放在执行栈中。不同步执行的代码,放在queue中,等待执行栈空了,再从queue中执行回调函数。

发布了2 篇原创文章 · 获赞 1 · 访问量 73

猜你喜欢

转载自blog.csdn.net/GANG_1/article/details/104327953