我试图绕过this。我必须正确理解。
实施例,
Future A() { ..}
Future B() async{
await A();
print "123";
}
为什么B需要回归未来? 不等待使B()同步吗?即等待A完全完成然后执行打印语句。
那么,B回归未来的必要性是什么?
答案 0 :(得分:4)
async
和await
不进行异步执行同步。没有办法做到这一点。
所有async
和await
的作用是使异步代码看起来更像同步代码。这只是语法糖。使用async
和await
可以完成的所有操作都可以在没有它的情况下完成。
可以使用.then(...then(...then(...).catchError())).catchError(...)
,try
,catch
代替深度嵌套的finally
个不同的语句,使代码更易于编写,阅读和推理。
答案 1 :(得分:1)
在Dart语言中,async
修饰符允许在异步函数中使用扩展语法(当然,异步函数在大多数情况下不能立即返回结果,直到它们没有完成,它们返回未来的包装器在Dart中调用Future
)的结果。
如果编写同步操作,使用扩展语法意味着可以以相同的方式编写异步操作。
为了能够在单个函数中使用同步和异步操作,扩展语法允许使用运算符await
。
使用运算符await
,异步操作看起来像是同步操作,因为运算符await
执行的工作可以称为asynchronously wait until the operation will not completed
。