Skip to content

Commit 9e08660

Browse files
committed
Handle subsecond updates asynchronously in Dioxus
Try to resolve #4902.
1 parent b084432 commit 9e08660

File tree

3 files changed

+6
-1
lines changed

3 files changed

+6
-1
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/core/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ futures-util = { workspace = true, default-features = false, features = ["alloc"
2626
serde = { workspace = true, optional = true, features = ["derive"] }
2727
subsecond = { workspace = true }
2828
anyhow = { workspace = true }
29+
wasm-bindgen-futures = { workspace = true }
2930

3031
[dev-dependencies]
3132
dioxus = { workspace = true }

packages/core/src/virtual_dom.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -771,7 +771,10 @@ impl VirtualDom {
771771
fn register_subsecond_handler(&self) {
772772
let sender = self.runtime().sender.clone();
773773
subsecond::register_handler(std::sync::Arc::new(move || {
774-
_ = sender.unbounded_send(SchedulerMsg::AllDirty);
774+
let sender = sender.clone();
775+
wasm_bindgen_futures::spawn_local(async move {
776+
_ = sender.unbounded_send(SchedulerMsg::AllDirty);
777+
});
775778
}));
776779
}
777780
}

0 commit comments

Comments
 (0)