在Dart中有兩種隊列:
1、事件隊列(event queue):包含所有的外來事件
2、微任務(wù)隊列(microtask queue):表示一個短時間內(nèi)就會完成的異步任務(wù),他的優(yōu)先級是最高的,高于事件隊列,只要隊列中有它,就會一直霸占著事件循環(huán),如果有太多的微任務(wù)隊列存在,可能會對事件隊列中的觸摸、繪制等外部事件造成一定的阻塞卡頓
//微任務(wù)創(chuàng)建? ?scheduleMicrotask((){})
在有微任務(wù)隊列時,會優(yōu)先執(zhí)行,then()也是添加進(jìn)微任務(wù)隊列中,

事件循環(huán)
Dart大多是在主線程完成,但在Dart中也有可以操作子線程,比如Isolate,它其實看起來像是進(jìn)程,因為有獨立的內(nèi)存空間,它的好處是:不用擔(dān)心多線程資源搶奪問題,不需要鎖。 不過它數(shù)據(jù)交互就比較麻煩。

Isolate使用
而Isolate要通信是需要ReceivePort支持的,如下:

Isolate通信
還有一個compute是在Isolate的上層封裝,能返回值,返回的是一個Future,也是子線程實現(xiàn)的一種方式:

compute實現(xiàn)子線程