在Flutter中调用Future和Future.microtask有什么区别?

b91juud3  于 2023-08-07  发布在  Flutter
关注(0)|答案(3)|浏览(107)

Future.microtask constructor的文档来看,它说:

* Creates a future containing the result of calling [computation]
   * asynchronously with [scheduleMicrotask].

字符串
regular Future constructor的文档说明:

* Creates a future containing the result of calling [computation]
   * asynchronously with [Timer.run].


我想知道,它们对编码有什么样的影响,什么时候我们应该使用一个或另一个?

8gsdolmq

8gsdolmq1#

所有微任务都在任何其他Future s/Timer s之前执行。
这意味着当你想尽快异步完成一个小的计算时,你会想要调度一个微任务。

void main() {
  Future(() => print('future 1'));
  Future(() => print('future 2'));
  // Microtasks will be executed before futures.
  Future.microtask(() => print('microtask 1'));
  Future.microtask(() => print('microtask 2'));
}

字符串
你可以run this example on DartPad
事件循环将简单地在其他未来之前以FIFO方式拾取所有微任务。微任务队列是在您调度微任务时创建的,并且该队列在其他future(事件队列)之前执行。
The Event Loop and Dart有一篇过时的存档文章,其中介绍了事件队列微任务队列
您还可以通过这个helpful resource了解更多关于微任务的信息。

oxf4rvwz

oxf4rvwz2#

下面是一个简单的示例,说明了代码如何按照Future的执行顺序运行。在下面的示例中,生成的print语句不会按字母顺序排列。

void main() async{
  print("A");
  await Future((){
    print("B");
    Future(()=>print("C"));
    Future.microtask(()=>print("D"));
    Future(()=>print("E"));
    print("F");
  });
  print("G");
}

字符串
生成的print语句将按照如下所示的顺序结束。注意B、F和G首先打印出来,然后是C,然后是E。这是因为B、F和G是同步的。D在C和E之前被调用,因为它是一个微任务。


的数据

q35jwt9p

q35jwt9p3#

В п р и в е д е н н о м ко д е м о н с т р и руе т ся а с и нхр о н о е вып о л н е н и е с и с п о льзо в а н и е м Future в Dart.我的意思是,我的意思。
我想说的是:
“A”,“B”и“F”,т а к а к о н и с и нхр о н ы е о п е р аци в ы п о л н я т с я в т о м п о р я д к е,в к о т о р о м в с т р е ч а т с я в к о д е.你的未来是什么意思?т о з а с т а в л я е т п р огр а м м у д о ж и д а т ь с я з а в е р ени я Future,п р е ж д е че м п е р ехо д и т ь к с л е д у Future в ы п олн я й т с я а с и нхр о н н ы е о п е р аци и。Оп е р а т о р“C”и“E”за пус к а й т с я к а с и нхр о н н ы е Future и п оме а й т с я в оче р едь н а в ы п олн е н и е。在D字的基础上,我们可以看到,在未来,我们可以看到,在未来,我们可以看到,在未来,我们可以看到,在未来,我们可以看到。“G”,“未来”П о с л е з а в е р ж е н и я Future бл ока,а с и нхр о н н ы е Future и з п р е д ы ду е г о з а г а в ы п о л н я тс я.“C”и“E”м о г у т б ы ть р а с п еча т а н ы в л о м п о ряд к е,т а к а к о н и н еза в и с и м ы д р у г о т д р у г а。现在,我们的工作是:A,B,F,G,D,C(или C,D -т о за в иси т ого,к а к ой Future буде т выпо л н е н ра ньше).在这里,我们的工作是:

相关问题