理解ECMAScript的异步编程

一、什么是异步编程

        在JavaScript的世界中,所有代码都是单线程执行的。由于这个“缺陷”,导致JavaScript的所有网络操作,浏览器事件,都必须是异步执行。

        异步操作也就是在js中的单线程,在执行某一个需要耗时的动作的时候开启异步,就是这个方法去执行,但是当前线程不等待其中的结果,而是单线程继续执行下面的代码,当耗时的动作执行完成之后,他会回调执行一个函数,避免了等待这个耗时动作而导致整个线程被阻塞。

        首先你要把回调和异步两个概念区分开来,回调是回调,异步是异步,知识回调在异步用应用的比较多而已,所以往往很多人将两者混为一团,回调是js中的一种机制,而异步是js中处理网络请求的一种方法。

        回调:函数a有一个参数,这个参数是个函数b,当函数a执行完以后执行函数b。那么这个过程就叫回调。

思考:一定要以参数形式传过去吗,我不可以直接在函数a里面调用函数b吗?

解惑:如果你直接在函数a里调用的话,那么这个回调函数就被限制死了。但是使用函数做参数就有下面的好处:当你a(b)的时候函数b就成了回调函数,而你还可以a(c)这个时候,函数c就成了回调函数。如果你写成了function a(){...;b();}就失去了变量的灵活性。

        异步:现在思考单线程同步的线程执行,就是整个程序的执行都是按照顺序执行,前面的动作执行完成之后在执行后面的代码,一步一步的。但是假设有一个非常耗时间的代码,比如说在磁盘中写数据,在磁盘中读数据,网络请求数据等等关于一些io的请求都比较耗时,在这样的情况下,整个线程都会卡死在这里,等待这个过程完成之后在执行下面的代码。这样代码就体验不好,所以就出现了异步,就是在执行这个耗时的动作的时候,我在这里不用卡死,而是直接执行下面的代码,当上面的耗时动作完成之后,回调到我的代码中,我再去执行返回的结果。其实这里也有回调的意思,就是执行耗时动作完成之后,返回去要执行的代码。

二、单线程和多线程

三、EcmaScript的异步编程

四、理解ES5、ES6、ES7不同版本实现异步编程的方法

    1、ES5实现异步编程的方法:回调

    2、ES6实现异步编程的方法:Promise或Generator/yield

    3、ES7实现异步编程的方法:async/await

    4、express实现异步编程的方法:

    6、koa2实现异步编程的方法:

参考文章:

https://blog.csdn.net/sinat_17775997/article/details/71928479

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值