Flutter Dart中多个异步函数能否并发执行?附API场景咨询
Dart异步执行疑问
问题描述
我有4个可能调用更多API的接口请求,在main()中编写如下代码:
api1(); api2(); api3();
每个函数的主体为:
{ await getData(); getMoreData(); getMoreData(); }
注意main函数和函数主体中均未使用await关键字。请问这是否意味着前3个函数会同时执行,后续调用的函数也会同时执行?
解答
是的,api1、api2、api3会几乎同时启动执行,具体细节如下:
- 在main函数里直接调用这三个函数且不加
await时,Dart事件循环会依次触发它们的执行,不会等待前一个函数执行完毕才启动下一个。 - 每个函数内部运行到
await getData()时,会暂停当前函数的执行,将getData()的异步任务放入事件队列,随后立刻返回,让后续代码(比如api2、api3的启动)继续执行。 - 当
getData()的异步任务完成后,对应的函数才会恢复执行,依次运行后面的getMoreData()(这两个如果是同步调用,会按顺序执行,不会并行)。
总结来说:三个函数的启动是并行的,但每个函数内部的流程会在await处挂起,等异步任务完成后再继续执行后续的同步逻辑。
内容的提问来源于stack exchange,提问作者Miro
相关产品推荐
相关产品推荐

