因为在异步模式下,当我们使用AJAX发送完请求后,可能还有代码需要执行。这个时候可能由于种种原因导致服务器还没有响应我们的请求,但是因为我们采用了异步执行方式,所有包含AJAX请求代码的函数中的剩余代码将继续执行。如果我们是将请求结果交由另外一个JS函数去处理的socket传输中拿tcp传输为例。假设服务器a
客户机b进行通信传输。首先需要在a机建立监听线程。监听某一端口,那么b机可以向a机发送通讯请求,b机连接到a机以后。a机可以从他的监听队列中取的一个监听对象。在a端拿到了这个socket对象就可以进行接收跟发送数据了。这里问题就出现了。假如b端在请求a端的时候请求成功就发送一条数据。那么
a端就可以直接拿socket对象得到他的信息。但是假如b端并没有在连接成功后直接发送信息而是在后来不确定的时间这内发送的信息。那么a端就无法得到这条信息。通常的做法是用一个定时器去不短的扫描这个数据缓存区。看是不是有数据存在这样效率非常低下。那么如何解决这个问题呢。就用到了我们的异步传输。异步传输的原理是。在a端得到这个socket对象以后并不是直接去接收数据而是建立一个回调函数。回调函数是由系统维护的。他在指定的时间自动去扫描数据存储区。假如有数据他就把数据存储到指定的字节数组中。不用用户自己去关心。
那么同步与异步分别应用于什么情况呢?假如用户的socket连接数据比较短暂的。一次连接直接发送数据的或客户端比较少的就使用同步假如用户的socket属于长时间连接的就使用异步方式
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)