当前位置: 首页 > 知识库问答 >
问题:

改造同步和异步请求有什么区别?哪一个更好,为什么?

陈毅
2023-03-14

我真的到处都在寻找这个,我可以发出同步和异步数据请求,但我不能真正理解哪个是异步的,哪个是异步的?什么与什么同步?

共有3个答案

金旺
2023-03-14

通过定义返回类型来声明同步请求。同步方法在主线程上执行。这意味着UI会在请求执行期间阻塞,并且在此期间不可能进行交互。使用。调用对象上的execute()方法将执行同步请求。反序列化的响应主体可通过。响应对象上的body()方法。

异步请求没有返回类型。相反,定义的方法需要一个类型化回调作为最后一个方法参数。使用异步请求迫使您使用两种回调方法实现回调:success和failure。从服务类调用异步getTasks()方法时,必须实现一个新的回调,并定义请求完成后应执行的操作。

公西翊歌
2023-03-14

当你异步时,它意味着不在前台(它在完成给定任务时不会阻止用户界面),另一方面同步意味着在前台,而你的应用程序在用户界面消耗的同一个线程中执行事情。

在您的情况下(通过改造或任何其他RESTAPI发出REST请求),您不能在前台发出,而必须在后台线程中发出。

在改装的情况下,您可以使用以下方法提出请求:

call.execute() // works in the foreground.
call.enqueue() // works in the background.

所以你有两个选择:要么你直接call.enqueue,要么你可以用户call.execute但是用服务包装(我的意思是你必须自己处理后台工作)。

慕逸仙
2023-03-14

call.execute()在当前线程上运行请求。

呼叫。排队(回调)在后台线程上运行请求,并在当前线程上运行回调。

您通常不想运行调用。在主线程上执行(),因为它会崩溃,但您也不想运行调用。在后台线程上排队()。

 类似资料:
  • 问题内容: 当我使用of方法时,和之间有什么区别? 问题答案: Mozilla开发人员:同步和异步请求 支持同步和异步通信。但是,一般而言,出于性能方面的考虑,异步请求应比同步请求优先。 简而言之,同步请求会阻止代码执行,并可能泄漏内存和事件。这可能会导致严重的问题。使用同步请求的唯一可行理由是更轻松地促进其中的下载。

  • 问题内容: 对于旅行预订Web应用程序,如果有100个并发用户登录,是否应该通过“同步”或“静态同步”方法来实现机票预订并生成“电子机票编号”? 问题答案: 好了,您是否知道静态方法和实例方法之间的一般区别? 唯一的区别是,在VM开始运行该方法之前,它必须获取监视器。对于实例方法,获得的锁是与您要在其上调用该方法的对象相关联的锁。对于静态方法,获取的锁与类型本身关联- 因此,其他线程将无法同时调用

  • 问题内容: 可以说我们有以下两个示例代码: 还有这个 所以有人可以告诉我现在有什么区别吗? 问题答案: 这两种不同的方法在 功能上是等效的 。有 可能 是一个非常小的 性能 差异: 在字节码级别,作为方法访问标记中设置的位, 同步方法 公布其同步需求。JVM查找该位标志并进行适当同步。 该 同步块 通过存储在该方法的类文件中的字节码定义的操作序列实现其同步。 因此,同步方法 可能会以 更快的速度执

  • 问题内容: 之间有什么区别 和 如果我错了,请忽略此问题。 问题答案: 在第一个线程中,只有一个线程一次可以执行整个方法,而在第二个线程中,如果不将 其 用作参数,则只有一个线程可以执行该同步块。 这是它的副本。使用同步方法而不是同步块是否有优势?

  • 问题内容: 我对使用ajax或jquery感到困惑,所以我想知道区别是什么,例如性能和复杂性哪个更好。 问题答案: AJAX是一种从网页到服务器执行XMLHttpRequest(带外Http请求)并发送/检索要在网页上使用的数据的技术。AJAX代表异步Java语言和XML。它使用JavaScript构造XMLHttpRequest,通常在各种浏览器上使用不同的技术。 jQuery(网站)是一个Ja

  • 问题内容: 我已经开始学习线程同步。 同步方法: 同步块: 什么时候应该使用方法和块? 为什么块比方法更好? 问题答案: 这不是更好的问题,只是有所不同。 同步方法时,实际上是在与对象本身进行同步。对于静态方法,您正在同步到对象的类。因此,以下两段代码以相同的方式执行: 就像您写的一样。 如果要控制到特定对象的同步,或者只想将方法的 一部分 同步到该对象,则指定一个块。如果在方法声明上使用关键字,