fix signals in futures

This commit is contained in:
Evan Almloff 2023-08-04 17:25:40 -07:00
parent a6f611eccf
commit b3fbbba711
2 changed files with 12 additions and 6 deletions

View file

@ -33,12 +33,12 @@ struct ChildProps {
fn Child(cx: Scope<ChildProps>) -> Element {
let count = cx.props.count;
// use_future!(cx, || async move {
// loop {
// tokio::time::sleep(std::time::Duration::from_secs(count.value())).await;
// *count.write() += 1;
// }
// });
use_future!(cx, || async move {
loop {
tokio::time::sleep(std::time::Duration::from_secs(count.value())).await;
*count.write() += 1;
}
});
render! {
div {

View file

@ -17,6 +17,9 @@ impl VirtualDom {
let mut cx = Context::from_waker(&task.waker);
// update the scope stack
self.runtime.scope_stack.borrow_mut().push(task.scope);
// If the task completes...
if task.task.borrow_mut().as_mut().poll(&mut cx).is_ready() {
// Remove it from the scope so we dont try to double drop it when the scope dropes
@ -26,5 +29,8 @@ impl VirtualDom {
// Remove it from the scheduler
tasks.try_remove(id.0);
}
// Remove the scope from the stack
self.runtime.scope_stack.borrow_mut().pop();
}
}