|
@@ -337,29 +337,12 @@ impl VirtualDom {
|
|
|
|
|
|
let scopes = &mut self.scopes;
|
|
|
let task_poll = poll_fn(|cx| {
|
|
|
- //
|
|
|
- let mut any_pending = false;
|
|
|
-
|
|
|
let mut tasks = scopes.tasks.tasks.borrow_mut();
|
|
|
- let mut to_remove = vec![];
|
|
|
-
|
|
|
- // this would be better served by retain
|
|
|
- for (id, task) in tasks.iter_mut() {
|
|
|
- if task.as_mut().poll(cx).is_ready() {
|
|
|
- to_remove.push(*id);
|
|
|
- } else {
|
|
|
- any_pending = true;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- for id in to_remove {
|
|
|
- tasks.remove(&id);
|
|
|
- }
|
|
|
+ tasks.retain(|_, task| task.as_mut().poll(cx).is_pending());
|
|
|
|
|
|
- // Resolve the future if any singular task is ready
|
|
|
- match any_pending {
|
|
|
- true => Poll::Pending,
|
|
|
- false => Poll::Ready(()),
|
|
|
+ match tasks.is_empty() {
|
|
|
+ true => Poll::Ready(()),
|
|
|
+ false => Poll::Pending,
|
|
|
}
|
|
|
});
|
|
|
|