flutter - Future,microtask事件佇列順序
阿新 • • 發佈:2020-10-16
題目?
dart執行緒優先順序
dart 中的程式碼執行優先順序可以分為三個級別:
- 在 Main 中寫程式碼將最先執行;
- 執行完 Main 中的程式碼,然後會檢查並執行 Microtask Queue 中的任務,
通常使用 scheduleMicrotask 將事件新增到 MicroTask Queue 中; - 最後執行 EventQueue 佇列中的程式碼,通常使用 Future 向 EventQueue加入時間,也可以使用 async 和 await 向 EventQueue 加入事件。
總結:Dart 中事件的執行順序:Main > MicroTask > EventQueue。
dart中執行非同步操作
dart中執行非同步操作通過Future,多個 Future 的執行順序.
- 規則一:Future 的執行順序為Future的在 EventQueue 的排列順序,先進先執行。
- 規則二:當任務需要延遲執行時,可以使用 new Future.delay() 來將任務延遲執行。
- 規則三: Future 如果執行完才新增 than ,該任務會被放入 microTask,當前 Future 執行完會執行 microTask,microTask 為空後才會執行下一個Future。
- 規則四:Future 是鏈式呼叫,意味著Future 的 then 未執行完,下一個then 不會執行。