All*_*len 29 jquery asynchronous definition synchronous
当与编程相关时,我对术语异步感到困惑.在编程术语中,它似乎意味着与词典中定义的相反.例如,同步一词意味着:
同时发生; 时间一致; 同期; 同时.
以相同的速度和完全一起进行; 一起重复.
然而,维基百科说:
"在编程中,异步事件是独立于主程序流的事件.异步动作是在非阻塞方案中执行的动作,允许主程序流继续处理."
是不是"非阻塞"并且允许"主程序流程继续处理"的同步或"同时发生"?似乎同步一词表示"非阻塞"和异步,"阻塞".为什么这些术语在与编程相关时似乎反向使用,或者它与我不理解的低级计算有关?
当我使用同步AJAX调用时,我会执行以下操作...
$.ajax({
url: somefile.php,
async: false,
success: {
...code that gets run on success...
}
});
...code that gets run after the ajax-success code runs...
Run Code Online (Sandbox Code Playgroud)
有了这个,它实际上在运行脚本的其余部分之前等待响应,这是一个阻塞动作.那么为什么这个被称为同步,当它与任何其他过程不同步时,实际上却相反?
Mch*_*chl 21
实际上,这是其中一种情况,其中该词的原始含义被颠覆并且意味着与流行用法不同的东西.
电信中的"同步"意味着接收器在准备接收消息时发出信号,并且只有在此信号之后,发送器才会开始发送.当发送器完成消息时,它将发出信号已经完成,这样接收器现在可以处理接收到的消息并做下一步应该做的事情.
这当然是一种简化和非常宽泛的一种,但它应该让你感觉到JS中存在"(a)同步"的含义.
因此JS中的同步请求实际上与程序的主流同步.程序向服务器发送请求('我已准备好接收')并等待消息.来自服务器的消息将具有明确定义的结束('消息在此处结束 - 完成您的工作').当收到它时,JS知道它可以继续执行程序.
Synchronous在你的问题的上下文中意味着2个部分正在等待彼此.
例如,如果您有一个客户端代码向服务器发出请求,并且您的代码在服务器响应到达之前不会继续处理,那么这意味着您的代码是同步的,即与服务器的响应同步.
如果您的客户端代码发出请求但没有等待响应并继续其处理,并且一旦来自服务器的请求的响应到达,那么您的代码(例如在特定处理程序中)开始处理响应然后处理是异步,即核心客户端处理与服务器的响应是异步的.
这些术语意味着缺乏依赖性,因为如果(使用客户端 - 服务器的示例)响应对于客户端继续其处理是强制性的,则不可能将同步代码转换为异步.
是不是"非阻塞"并且允许"主程序流程继续处理"的同步或"同时发生"?似乎同步一词表示"非阻塞"和异步,"阻塞".
对条款的错误解释.它不是同步的程序流程.不同的部分可能是(例如线程),也可能不是可以同步或不同步的同一程序的一部分.
| 归档时间: |
|
| 查看次数: |
12756 次 |
| 最近记录: |