kopia lustrzana https://github.com/micropython/micropython
webassembly/modjsffi: Add jsffi.async_timeout_ms.
This function exposes `setTimeout()` as an async function. Signed-off-by: Damien George <damien@micropython.org>pull/14328/head
rodzic
967ad38ac7
commit
84d6f8e8cb
|
@ -61,12 +61,27 @@ static mp_obj_t mp_jsffi_to_js(mp_obj_t arg) {
|
||||||
}
|
}
|
||||||
static MP_DEFINE_CONST_FUN_OBJ_1(mp_jsffi_to_js_obj, mp_jsffi_to_js);
|
static MP_DEFINE_CONST_FUN_OBJ_1(mp_jsffi_to_js_obj, mp_jsffi_to_js);
|
||||||
|
|
||||||
|
// *FORMAT-OFF*
|
||||||
|
EM_JS(void, promise_with_timeout_ms, (double ms, uint32_t * out), {
|
||||||
|
const ret = new Promise((resolve) => setTimeout(resolve, ms));
|
||||||
|
proxy_convert_js_to_mp_obj_jsside(ret, out);
|
||||||
|
});
|
||||||
|
// *FORMAT-ON*
|
||||||
|
|
||||||
|
static mp_obj_t mp_jsffi_async_timeout_ms(mp_obj_t arg) {
|
||||||
|
uint32_t out[PVN];
|
||||||
|
promise_with_timeout_ms(mp_obj_get_float_to_d(arg), out);
|
||||||
|
return proxy_convert_js_to_mp_obj_cside(out);
|
||||||
|
}
|
||||||
|
static MP_DEFINE_CONST_FUN_OBJ_1(mp_jsffi_async_timeout_ms_obj, mp_jsffi_async_timeout_ms);
|
||||||
|
|
||||||
static const mp_rom_map_elem_t mp_module_jsffi_globals_table[] = {
|
static const mp_rom_map_elem_t mp_module_jsffi_globals_table[] = {
|
||||||
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_jsffi) },
|
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_jsffi) },
|
||||||
|
|
||||||
{ MP_ROM_QSTR(MP_QSTR_JsProxy), MP_ROM_PTR(&mp_type_jsproxy) },
|
{ MP_ROM_QSTR(MP_QSTR_JsProxy), MP_ROM_PTR(&mp_type_jsproxy) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_create_proxy), MP_ROM_PTR(&mp_jsffi_create_proxy_obj) },
|
{ MP_ROM_QSTR(MP_QSTR_create_proxy), MP_ROM_PTR(&mp_jsffi_create_proxy_obj) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_to_js), MP_ROM_PTR(&mp_jsffi_to_js_obj) },
|
{ MP_ROM_QSTR(MP_QSTR_to_js), MP_ROM_PTR(&mp_jsffi_to_js_obj) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_async_timeout_ms), MP_ROM_PTR(&mp_jsffi_async_timeout_ms_obj) },
|
||||||
};
|
};
|
||||||
static MP_DEFINE_CONST_DICT(mp_module_jsffi_globals, mp_module_jsffi_globals_table);
|
static MP_DEFINE_CONST_DICT(mp_module_jsffi_globals, mp_module_jsffi_globals_table);
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue