docs: 从 Flutter 和前端角度出发,聊聊单线程模型下如何保证 UI 流畅性

This commit is contained in:
杭城小刘
2021-06-20 22:05:12 +08:00
parent 0445ed4b62
commit fd6372abb8

View File

@@ -333,7 +333,9 @@ sub subTask 2 Future 4
异步函数的结果在将来某个时刻才返回,所以需要返回一个 Future 对象,供调用者使用。调用者根据需求,判断是在 Future 对象上注册一个 then 等 Future 执行体结束后再进行异步处理,还是同步等到 Future 执行结束。Future 对象如果需要同步等待,则需要在调用处添加 **await**,且 Future 所在的函数需要使用 **async** 关键字。
await 并不是同步等待而是异步等待。Event Loop 会将调用体所在的函数也当作异步函数,将等待语句的上下文整体添加到 Event Queue 中一旦返回Event Loop 会在 Event Queue 中取出上下文代码,等待的代码继续执行
await 并不是同步等待而是异步等待。Event Loop 会将调用体所在的函数也当作异步函数,将等待语句的上下文整体添加到 Event Queue 中一旦返回Event Loop 会在 Event Queue 中取出上下文代码,等待的代码继续执行
await 阻塞的是当前上下文的后续代码执行,并不能阻塞其调用栈上层的后续代码执行
```dart
void main() {
@@ -407,6 +409,8 @@ data: 3
此外 Flutter 中提供了执行并发计算任务的快捷方式-**compute 函数**。其内部对 Isolate 的创建和双向通信进行了封装。
实际上,业务开发中使用 compute 的场景很少,比如 JSON 的编解码可以用 compute。
计算阶乘:
```dart