各位好,我想问个问题:异步的作用,总的概括来说,就是为了当处理某一件事情的时候处理的得更快是吗?我对这个东西一直没有深度理解,求解答
同步,就是一条命令接着一条执行,若某条指令要花很长时间,那么整个进程就只能等,要等它处理好了才能继续往下执行。
异步就是你执行到某个耗时异步程序时,它只是调用了这个程序,然后就继续执行其他程序去了,等那个耗时程序执行完后再回调。
举个例子,你要去政府办个事,这事要走很多流程,一天办不完,你把材料提交给他办事员了,正常情况是你可以走了,该干嘛干嘛去,等他那边办好了再叫你来取,这其实就是异步。不然用同步的话你就得在那干等一天了,而且啥都不能干。
同步问题:
JavaScript语言的执行是单线程的,所谓"单线程",就是指一次只能只能完成一件任务。如果有多个任务,就必须排队完成,前面一个任务完成,才能执行后面一个任务。单线程这种模式好处是实现起来比较简单,执行环境单一。坏处是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行。同步应用在登陆成功后获取数据问题等
异步问题:
当存在多个任务时,不会因为进程问题去影响其他的任务进程,异步请求是发起请求接口后不等待接口的响应,直接继续自己的业务逻辑,由此可见异步请求不会造成自己的线程阻塞,不用等待接口返回后再执行后面的逻辑,用时相对较短,一般应用在回调函数和promise回调,会提供相应链式操作处理返回的结果。
同步你应该能理解,同时完成。因为JS是单线程语言,同一时间只能做一件事。但是现在浏览器普及,人们想在浏览器上做更多的事,效率更高,不影响使用,但是也不能让JS变成多线程,所以JS新增了异步,使用最多就是请求,当我使用浏览器进行交互,但也不影响发生Ajax发送,交互和发送Ajax是抽象是的同步,实践代码上异步的。
举个例子,同步就像自己做饭然后吃饭,一气呵成
异步就像点外卖,等外卖的时间还不耽误做其他的事情,外卖送到了,我就可以吃到饭了
同步:点个外卖,坐着等外卖到了,吃饭
异步:点个外卖,打开游戏打游戏,同时等外卖。
同步可以保证时序性,保证准确确保不会,你点击删除,删除的结果还没回来,你就点击修改,结果这个修改请求就出问题了。
异步可以带来更好的交互,比如用户添加了一些数据,但是这个过程很慢,你异步,用户就不用等待,用户可以去做别的事情,
同时异步还包含有多线程的意思,比如你电脑复制文件,大文件复制很慢,如果是同步的,你就电脑什么也不能做只能等待这个完事,但是异步的,你就可以同时复制四五个文件。