Flutter 颤振:使用等待时的差异
想象一下,我调用了一个Flutter 颤振:使用等待时的差异,flutter,asynchronous,dart,async-await,Flutter,Asynchronous,Dart,Async Await,想象一下,我调用了一个异步函数,返回类型为Future调用\u uploadData,位于按钮的onPressed属性内,UI不依赖于函数调用 1st onPressed: () async { await _uploadData(); }, 或第二名 onPressed: () { _uploadData(); } 这有什么区别吗?如果没有,那么第一个代码就是更好的实践吗?是的,这些代码有不同的行为。如果使用async/await语法,代码将不会继续,而是等待将来完成其工作
异步
函数,返回类型为Future
调用\u uploadData
,位于按钮的onPressed
属性内,UI不依赖于函数调用
1st
onPressed: () async {
await _uploadData();
},
或第二名
onPressed: () {
_uploadData();
}
这有什么区别吗?如果没有,那么第一个代码就是更好的实践吗?是的,这些代码有不同的行为。如果使用async/await语法,代码将不会继续,而是等待将来完成其工作。因此,如果您的UI不依赖于未来,请不要使用async/await。否则就使用它。如果您想理解它,请打开并添加以下代码
void _incrementCounter() async{
await Future.delayed(Duration(seconds: 5));
setState(() {
_counter++;
});
}
将_incrementCounter()方法转换为上述代码。是的,这些代码具有不同的行为。如果使用async/await语法,代码将不会继续,而是等待将来完成其工作。因此,如果您的UI不依赖于未来,请不要使用async/await。否则就使用它。如果您想理解它,请打开并添加以下代码
void _incrementCounter() async{
await Future.delayed(Duration(seconds: 5));
setState(() {
_counter++;
});
}
将_incrementCounter()方法转换为上述代码。谢谢!现在我很清楚了。另一件有趣的事情:将代码包装在incrementCounter中,使用循环执行,例如5次,然后在将来使用wait关键字执行代码。延迟,然后不执行,这将演示一系列异步调用,您只需确保每个调用都尽可能快地执行,不用彼此等待,谢谢!现在我很清楚了。另一件有趣的事情:将代码包装在incrementCounter中,使用循环执行,例如5次,然后在将来使用wait关键字执行代码。延迟,然后不执行,这将演示一系列异步调用,您只需确保每个调用都尽可能快地执行,不用彼此等待。