异步中.then()的坑爹
main先执行,Microtask队列执行,队列空,event队列执行,延时最后执行。
await可以变异步为同步,但是需要一层一层递进。
回调可以同步,但是需要暴露回调口。项目中没用到Microtask,和provider,估计是研发不喜欢用或者他不会用。建议灵活使用。
————————————————
版权声明:本文为CSDN博主「花生-炎天」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/whs867712232/article/details/108217283
结论
同步函数内要小心使用异步函数
不要 var result=asyncFunction(); result=<Future
除非 var result=await asyncFunction();
如果使用async/await又会导致所有嵌套函数都得写async/await
使用.then()时要及时return,避免写超过2层的.then
async:返回Future
async*:返回流
实验
void main(){
asy()async{
return true;
}
no(){
var a=asy();
print('no_a:$a');
}
yes(){
asy().then((value) {
var a=value;
print('yes_a:$a');
return a;
});
}
yes2()async{
var a=await asy();
print('yes2_a:$a');
}
print('result0:${no()}');
print('result1:${yes()}');
print('result2:${yes2()}');
}
结果:
no_a:Instance of 'Future
result0:null
result1:null
result2:Instance of 'Future
yes_a:true
yes2_a:true