2
期間更新UI我有一個小的鏢腳本,我打算以下列方式使用:飛鏢:長計算
CanvasElement canvas;
void main() {
canvas = querySelector('#canvas');
querySelector('#start-button').onClick.listen((_) => work());
}
void work() {
var state; // some state of the computation
for (int i = 0; i < /*big number*/; i++) {
// do some long computation
render(state); // display intermediate result visualisation on canvas
}
}
void render(var state) {
canvas.context2D.... // draw on canvas based on state
}
是監聽點擊一個按鈕,上單擊執行一些長時間的計算和從計算中隨着計算的進行,在畫布上顯示一些中間結果。
但是,這不起作用 - 畫布在整個計算完成後只更新一次。
這是爲什麼?我應該如何安排我的代碼以實時,快速的方式工作?
請問您是否可以用一個小例子來解釋事件循環中的計算概念?關於分離菌,據我瞭解[this](https://www.dartlang.org/articles/event-loop/#use-isolates-or-workers-if-necessary),這是不可能在一個網絡應用程序是我的情況。 – zegkljan
你必須記住,所有的事情都在鏢中的一個單獨的線程中,如果你沒有機會讓Dart的事件循環繼續進行,這是你的問題的情況,它只是積累了所有請求,但是隻有在你的整個計算完成了。 – Mike
在我們將部分計算作爲主循環中的一個單獨事件(在未來執行它)之後,我們開始等待(等待),直到dart計算所有累積的事件,包括html重繪等等。 – Mike