Run panel watches asynchronously

I thought this was really cool to run things in the background:

import asyncio
import panel as pn
pn.extension()

slider = pn.widgets.FloatSlider()

layout = pn.Column(slider)

def callback_first(event):
    layout.append("first")

async def callback(event):
    await asyncio.sleep(3)
    layout.append("second")

def callback_last(event):
    layout.append("last")

slider.param.watch(callback_first, 'value')
slider.param.watch(callback, 'value')
slider.param.watch(callback_last, 'value')

layout

1 Like