diff --git a/Chapter1 - iOS/1.95.md b/Chapter1 - iOS/1.95.md index a0b4bfc..cc4c412 100644 --- a/Chapter1 - iOS/1.95.md +++ b/Chapter1 - iOS/1.95.md @@ -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