你的Future是怎样的?
Future是一个类,可以用来做一些比较耗时的操作但不阻塞主线程,等到需要用其返回值时再用
Promise: ?
一般都是作为某个函数的返回类型,比如
Future<String> fetchUsername() { // 不显式指定这个<String>也是可以的,毕竟比较先进的语言都有自动推断类型吧( // 模拟一个耗时操作,比如网络请求 return Future.delayed(Duration(seconds: 2), () => "Alice");}显然我们要返回一个Future对象,但是每次都包装一个太麻烦了,有没有更简单的方法呢?
有的兄弟,有的
async(异步)这个单词可以加在函数体外边,自动把返回值包装成Future对象,同时也开一个线程,比如这样
Future<String> fetchUsername() async { Future.delayed(Duration(seconds: 2)); return 'Alice';}这可真是太方便了,可我们如果要用到返回值的时候该怎么办呢?
等等你的函数!
Section titled “等等你的函数!”await可以让当前线程等一等一个有Future的函数,唯一的问题是,你无法选中主线程,所以你只能让所在的有async的函数等一等,直到那个函数执行完返回你所需要的值
Future<void> fetchData() async { // 只能让async等一等 print("开始获取数据..."); String username = await fetchUsername(); // 等等fetchUsername()吧! print("用户名:$username");}