为什么在使用http请求时使用异步?

问题描述 投票:0回答:2

我无法理解为什么在从服务器获取数据时使用Asynchronous和等待

api dart flutter
2个回答
2
投票

从客户端到服务器的网络请求(可能是长距离和慢速互联网)可能需要CPU时间范围内的永久性。如果它不是异步的,UI将阻塞,直到请求完成。

通过异步执行,UI线程可以自由更新进度条或渲染其他内容,而框架或操作系统堆栈正忙于另一个线程发送和接收代码所做的请求。

由于同样的原因,大多数其他呼叫到操作系统的文件或其他资源是异步的,而不是所有这些呼叫都像对远程服务器的请求一样慢,但通常你不能提前知道它是否会足够快,不会损害您的帧速率,并导致UI中的可见中断或janks。

await用于在使用wait开始的语句之后生成代码,仅在异步请求完成时执行。 async / await用于使异步代码看起来更像同步代码,以便更容易编写和推理。


1
投票

Async在可伸缩性和响应性方面提供了很多帮助。

使用同步请求会阻止客户端,直到收到响应。随着您增加并发用户,您基本上每个用户都有一个线程。这可能会造成大量的空闲时间和浪费的计算。一个请求按收到的顺序获得一个响应。

使用异步请求允许客户端以任何随机的执行顺序接收请求/发送响应,因为它们能够被接收/发送。这可以让您的线程更智能地工作。

这是来自Mozilla的一个非常简单和可靠的资源:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests#Asynchronous_request

© www.soinside.com 2019 - 2024. All rights reserved.