flutter - 理解 Dart 中的异步和同步
问题描述
我们知道,在 Dart 中,一切都是同步运行的,并且根据我在互联网上找到的一些定义
当您同步执行某事时,您会等待它完成,然后再继续执行另一个任务。当您异步执行某事时,您可以在它完成之前继续执行另一个任务。
我在这里不明白的是为什么b在c之前打印我的意思是如果代码同步运行那么它应该等待第 2 行完成打印c并且只有在打印c之后 它应该打印b
Ps-我知道我可以使用 async 和 await 关键字来等待第 2 行完成它的执行。我只是想了解这个同步代码是如何工作的。
void main(){
print("a");
Future.delayed(Duration(seconds:
5),(){
print("c");
});
print("b");
}
Output- a
b
c
解决方案
当你写:
print("a");
Future.delayed(Duration(seconds: 5),(){
print("c");
});
print("b");
您告诉程序打印“a”,然后启动Future
将在 5 秒内解析的 a 并打印“c”,然后打印“b”;但是您永远不会告诉程序等待Future
完成。
这是同步的。
这就是为什么你必须使用关键字让程序在移动到下一条指令之前await
等待完成。Future
推荐阅读
- ios - 无法使用 Nuance 凭据登录“https://developer.nuance.com/mix”
- android - 如何将我的代码转换为 lambda 表达式?
- elasticsearch - 过滤一些没有嵌套的子对象
- axapta - AX 中表单数据源中的 DirPartyTable
- python - 找不到满足 python 3.6.7 要求 tensorflow 的版本
- java - Elastic 6.5 不支持 IndexRequest
- node.js - Will my websocket server affect nodejs server?
- ios - Display saved time in UIDatePicker after re-run app
- tsql - 在另一个存储过程中使用存储过程中的值
- kotlin - Kotlin convert Map
to Map >