瀏覽代碼

fix async event handler (pass parent view into new task)

Falko Schindler 2 年之前
父節點
當前提交
da987f143d
共有 1 個文件被更改,包括 5 次插入2 次删除
  1. 5 2
      nicegui/events.py

+ 5 - 2
nicegui/events.py

@@ -233,10 +233,13 @@ def handle_event(handler: Optional[Callable], arguments: EventArguments) -> Opti
         with globals.within_view(arguments.sender.parent_view):
             result = handler() if no_arguments else handler(arguments)
         if is_coroutine(handler):
+            async def wait_for_result():
+                with globals.within_view(arguments.sender.parent_view):
+                    await result
             if globals.loop and globals.loop.is_running():
-                create_task(result, name=str(handler))
+                create_task(wait_for_result(), name=str(handler))
             else:
-                on_startup(None, result)
+                on_startup(None, wait_for_result())
         return False
     except Exception:
         traceback.print_exc()