Dart基础知识(三) 同步异步问题 延迟执行
Dart是一门单线程编程语言,所以异步IO+事件循环就显得尤为重要。但在一些业务逻辑上,我们需要手动规定执行顺序。
单函数 延迟执行
//延迟5秒执行回调函数
Future.delayed(new Duration(seconds: 5),(){
print("eating");
});
print("playing")
结果:先执行 playing , 再执行 eating
同步执行+延迟
void main() async{
//延迟5秒执行回调函数
await Future.delayed(Duration(seconds: 5),(){
print("eating");
});
print("playing");
}
结果:会在等待5秒后先执行 eating
多个函数延迟加载(同时计算)
//中括号里的这几个同时在进行,当全部执行完,执行then
Future.wait([
Future.delayed(new Duration(seconds: 1), () {
print("001");
}),
Future.delayed(new Duration(milliseconds: 2), () {
print("002");
})
]).then((List result) => print("over")); //所有运行结果保存在result里
多个函数同步执行(与上一情况对比)
//多个同步的话 是 每一个都是执行完了再执行下一个
await Future.delayed(new Duration(seconds: 1), () {
print("001");
});
await Future.delayed(new Duration(milliseconds: 2), () {
print("002");
});