共计 736 个字符,预计需要花费 2 分钟才能阅读完成。
这是一段测试代码,很多教程里都有
main() {print("Main 开始");
A();
print("Main 结束");
}
Future A() async {print("A 开始执行这个方法~");
print(await B());
// print(B());
print("A 执行结束");
}
Future B() async {print("B 开始执行这个方法~");
final result = await Future.delayed(Duration(seconds: 3), () => "123");
// final result = await "123";
print("B 执行结束~");
return Future(() => "请求到的数据:" + result.toString());
}
运行结果:
Main 开始
A 开始执行这个方法~
B 开始执行这个方法~
Main 结束
B 执行结束~
请求到的数据:123
A 执行结束
问下各位大佬:
-
如果一个函数被 async 标记,但内部没有 await,那么函数内部代码会貌似会同步执行,最后会返回 Future,这个 Future 是怎么来的?
-
在 A 函数中不使用 await 调用 B 函数 (A 函数的注释行),在遇到 B 函数的 Future.delay 时直接返回了 Future 对象给 A,这个返回给 A 的 Future 具体是怎么来的?
-
通过执行结果,并不是所有遇到 await 函数就把当前函数的后半部分抛到 event_looper 里,因为 await 调用 B 函数后,还是会同步调用 B 函数第一行打印语句。那么究竟是什么情况会导致 await 后面的抛到 event_looper,是有 Future 对象创建出来的时候么?
-
目前 dart 是可以写 await “123” 代码的,这样写自动变成 await Future.value(“123”) 么?
正文完