occurring at the same time; coinciding in time; contemporaneous;
simultaneous.going on at the same rate and exactly together; recurring together.
然而,维基百科说:
“In programming,asynchronous events are those occurring
independently of the main program flow. Asynchronous actions are
actions executed in a non-blocking scheme,allowing the main program
flow to continue processing.”
“不阻塞”是否允许“主程序流程继续处理”不会同步或“同时发生”?似乎术语同步表示“非阻塞”和异步“阻塞”。为什么这些术语似乎在与编程有关的时候反过来使用,还是与我不明白的低级计算有关?
当我使用同步AJAX调用时,我执行以下操作
$.ajax({ url: somefile.PHP,async: false,success: { ...code that gets run on success... } }); ...code that gets run after the ajax-success code runs...
这样,它在运行脚本的其余部分之前实际上等待响应,这是一个阻止操作。那么为什么这被称为同步,当它不与任何其他进程同步,但实际上是相反的?
解决方法
电信中的“同步”是指接收信号,只要它准备好接收消息,并且只有在该信号之后,发射机将开始传输。当发送器完成消息时,它将发出信号已经完成,以便接收器现在可以处理接收到的消息,并做下一步应该做的事情。
这当然是一个简化和非常广泛的一个,但它应该给你的感觉是从“(a)同步”的意义来到JS。
所以JS中的同步请求实际上与程序的主流同步。程序向服务器发送请求(‘我准备好接收’)并等待消息。来自服务器的消息将有一个明确的结尾(“消息在此结束 – 做你的工作”)。收到的时候,JS知道可以继续执行程序..