初始JS中的异步编程

JS的执行环境是单线程的,为什么是单线程的呢,JS语言的作用决定了它是单线程。
JS主要作用是控制用户与浏览器的页面交互的过程当中DOM节点的显示隐藏,如果它是
多线程的,假设有一个线程是向DOM中增加节点,有一个线程是从DOM中删除节点,因为是
多线程的,所以浏览器到底该听谁的,这就很复杂了。如果是单线程的就不会出现这样的
问题。
单线程的JS也面临着很多问题,比如如果一个JS需要运行的时间很长,那么可能页面在
很长一段时间都是空白的,因为没有多余的线程去处理DOM节点的显示,这样会导致用户
以为电脑死机或者网站有问题,是很不友好的用户体验。
为了避免类似事件的发生,JS中有四种实现异步编程的方法:
第一种就是利用回调函数,一个任务执行完之后不是执行排在它后面的另一个函数,而是
去执行它的回调函数,而且后一个任务也是不等待前一个任务执行完就执行。
第二种是通过事件监听,任务的执行不是看代码的顺序,而是取决于某个事件的发生
第三种是发布/订阅模式也叫观察者模式,多个函数想一个信号中心订阅某个信号,当信号中心
发布了该信号后,其他函数便开始执行
第四种是Promises对象,它是commonJS工作组提出的一种规范,为异步编程提供了统一的接口
每一个异步任务都返回一个promise对象,该对象有一个then方法,允许指定回调函数。

posted @ 2017-05-07 21:24  孙冬冬-入门前端  阅读(124)  评论(0编辑  收藏  举报