同步异步区别

同步异步区别本文详细阐述了同步与异步的区别 同步会导致用户等待 而异步提供更好的用户体验

大家好,欢迎来到IT知识分享网。

异步,不用等所有操作等做完,就相应用户请求。即先相应用户请求,然后慢慢去写数据库,用户体验较好。

先抛定义

同步,就是发出一个功能调用时,在没有得到结果之前,该调用就不返回或继续执行后续操作。这时程序是阻塞的,只有接收到返回的值或消息后才往下执行其他的命令。 因此 简单的说,同步就是必须一件一件事做,等前一件做完了才能做下一件事。

异步,与同步相对,当一个异步过程调用发出后,调用者在没有得到结果之前,就可以继续执行后续操作。当这个调用完成后,一般通过状态、通知和回调来通知调用者。

同步如打电话,通信双方不能断(我们是同时进行,同步),你一句我一句,这样的好处是,对方想表达的信息我马上能收到,但是,我在打着电话,我无法做别的事情。

 “异步”就是:

异步,就是分时处理(如收发短信),服务器接收到客户端请求后并不是立即处理,而是等待服务器比较空闲的时候加以处理,可以避免涌塞。

异步如收发收短信,对比打电话,打电话我一定要在电话的旁边听着,保证双方都在线,而收发短信,对方不用保证此刻我一定在手机旁,同时,我也不用时刻留意手机有没有来短信。这样的话,我看着视频,然后来了短信,我就处理短信(也可以不处理),接着再看视频。

如果再不理解

例子二:

代码中的同步和异步

对于写程序,同步往往会阻塞,没有数据过来,我就等着,异步则不会阻塞,没数据来我干别的事,有数据来去处理这些数据。

看下面这个简单的例子

function a(){

    console.log(‘a’)
}
 
function b(){

    console.log(‘b’)
}
a()
b()
复制代码
最后打印出来的结果就是 a b 先执行a函数,再执行b函数。

下面如果我们给a函数设置一个延时,那么a函数会等待这个延时。

setTimeout(function a(){

    console.log(‘a’)
}, 500)
 
function b(){

    console.log(‘b’)
}
 
b()
复制代码
结果是先出现b再打印出a这个例子就是我们一般的异步操作。

说到异步操作就要说一下这个回调函数

function f1(){

    …
}
 
function f2(){

    …
}
f1()
f2()
 
如果f1是异步操作,那么f2会直接执行,那么就不用等待f1了
 
我们来修改成回调函数
 
function f1(callBack){

    callBack()
}
 
function f2(){

    …
}
 
f1(f2)
 
复制代码
回调函数的优点是简单、容易理解和实现,缺点是不利于代码的阅读和维护,各个部分之间高度耦合(coupling),使得程序结构混乱、流程难以追踪(尤其是多个回调函数嵌套的情况),而且每个任务只能指定一个回调函数。

这就是我对同步和异步的理解,如若有有什么问题,欢迎大家指出来哈,我们一同学习进步。
————————————————
版权声明:本文为CSDN博主「结果才重要」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_/article/details/

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/158031.html

(0)
上一篇 2025-01-26 19:05
下一篇 2025-01-26 19:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信