为什么异步方法需要返回未来?

时间:2016-02-13 04:04:23

标签: dart

我试图绕过this。我必须正确理解。

实施例,

Future A() { ..}

Future B() async{
   await A();
   print "123";
}

为什么B需要回归未来? 不等待使B()同步吗?即等待A完全完成然后执行打印语句。

那么,B回归未来的必要性是什么?

2 个答案:

答案 0 :(得分:4)

asyncawait 进行异步执行同步。没有办法做到这一点。

所有asyncawait的作用是使异步代码看起来更像同步代码。这只是语法糖。使用asyncawait可以完成的所有操作都可以在没有它的情况下完成。

可以使用.then(...then(...then(...).catchError())).catchError(...)trycatch代替深度嵌套的finally个不同的语句,使代码更易于编写,阅读和推理。

答案 1 :(得分:1)

在Dart语言中,async修饰符允许在异步函数中使用扩展语法(当然,异步函数在大多数情况下不能立即返回结果,直到它们没有完成,它们返回未来的包装器在Dart中调用Future)的结果。

如果编写同步操作,使用扩展语法意味着可以以相同的方式编写异步操作。

为了能够在单个函数中使用同步和异步操作,扩展语法允许使用运算符await

使用运算符await,异步操作看起来像是同步操作,因为运算符await执行的工作可以称为asynchronously wait until the operation will not completed