根据我在dart官网上看到的,不使用async和await关键字返回Future对象的函数是同步函数,使用async和await关键字的函数是异步函数。
首先,我认为表达为同步函数的部分更像是异步函数,表达为异步函数的部分更像是同步函数。不阻止代码执行的同步函数似乎具有异步特性。这部分应该怎么理解?
其次,我在官网上确认了main函数是在主isolate中执行的。就“并发”而言,await函数和main函数中执行的函数如何在单线程中同时执行(我知道dart是单线程的)?在哪里以及如何可能?
我阅读了 https://dart.dev/language/concurrency 并遵循 https://dart.dev/codelabs/async-awaitn 。我也一直在搜索异步和并发关键字。
根据我在dart官网上看到的,不使用async和await关键字返回Future对象的函数是同步函数,使用async和await关键字的函数是异步函数。
不,返回
Future
的函数是异步的,无论它是否使用 async
关键字。 async
关键字允许使用 await
关键字(async
-await
最初不是 Dart 语言的一部分),并自动使所有 return
语句返回 Future
。我认为你看到的例子如果断章取义的话会产生误导;它可能试图演示当您尝试从同步函数调用异步函数时会发生什么,而不是声称示例中列出的所有函数都是同步的。
不阻止代码执行的同步函数似乎具有异步特性。这部分应该怎么理解?
是的。
其次,我在官网上确认了main函数是在主isolate中执行的。就“并发”而言,await函数和main函数中执行的函数如何在单线程中同时执行(我知道dart是单线程的)?在哪里以及如何可能?
您将并发与并行混为一谈。请参阅:Dart/Flutter 即使是单线程,如何并发执行代码?