微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jquery – 异步和同步条款

与编程有关的时候,我被异步语言所困惑。这似乎意味着在编程术语中与在字典中定义的相反。例如,同步词表示:
  1. occurring at the same time; coinciding in time; contemporaneous;
    simultaneous.

  2. 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知道可以继续执行程序..

原文地址:https://www.jb51.cc/jquery/183341.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐