关于js中的异步和同步是一个很头痛的问题,写这篇博客用以记录一下自己的学习,我也是在网上看了很多,感觉自己还是有点迷糊,先记录一下学习的东西,后期应该还会补充。
1.同步
javaScript是一门单线程的语言,有一个主线程和一个任务队列,在同一时间如果有多个任务需要执行,这些任务就需要进行排队,先进先出,前一个任务执行完毕,后一个任务才开始执行,可能会造成运行堵塞,严重会使页面不响应。
2.异步
所谓的异步就是后面的不等前面的执行完毕,后面的便开始执行了。这是因为js中的主线程和任务队列在发挥作用,异步处理时,任务不主动进入主线程,只有当任务队列通知主线程了,某个异步任务才会进入主线程,例如打开网页中图片的加载。
举个例子:
异步:一边敲代码,一边听音乐,一边吃东西
同步:先吃东西,吃完东西之后敲代码,代码完成了之后听音乐
关于两者的优缺点如下:
1.同步的执行效率比较低,消耗时间,但是有利于对执行的流程进行控制,如果出错了,很快便可以定位到错误
2.异步的执行效率高,执行时间消耗时间短,但是会占用更多的资源