【发布时间】:2015-12-01 02:16:41
【问题描述】:
当你做类似的事情时
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();
send() 函数触发一个线程(或类似的东西)并发发送 HTTP 消息,或者它发送,然后只有在发送完所有数据后才返回?
【问题讨论】:
-
首先,Ajax 是一种技术,而 XHR 对象就像符合 API 的类型实例……当您向资源(uri、端点)“发送”请求时。客户端和服务器之间的连接(流)已建立并保持打开状态直到关闭。事物;在缓冲响应时,用户代理/客户端可以关闭流......这是暂定的......但是服务器将在写入所有数据时关闭流。我会找到规格的。
-
好的。更具体。我有一堆字节要通过套接字连接发送,对吧?如果在 send() 返回后执行 formfield.value = ""; 之类的操作,是否有丢失这些字节的风险? ?
-
您的意思是如果您在发送请求后修改下一条语句中的表单字段变量?
-
javascript 是单线程的,它与 UI 共享相同的线程。当您调用 send 时,您将无法修改任何内容或执行任何行,直到它返回函数范围。这意味着在 XHR 对象上声明并由 xhr.send 方法/堆栈处理的数据在发送之前不能被修改。这有帮助吗?
-
好的,谢谢!这正是我想读的。
标签: javascript ajax concurrency send