From 813d559bc098eeaa1c6e0fa1deff92e666c0b458 Mon Sep 17 00:00:00 2001 From: elibdev Date: Mon, 19 Jun 2023 14:15:42 -0400 Subject: [PATCH] webassembly: Make mp_js_process_char asynchronous. This may also call the garbage collector. Signed-off-by: Eli Bierman --- ports/webassembly/README.md | 2 +- ports/webassembly/wrapper.js | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/ports/webassembly/README.md b/ports/webassembly/README.md index 10cc6aa8c..abd2864a5 100644 --- a/ports/webassembly/README.md +++ b/ports/webassembly/README.md @@ -121,7 +121,7 @@ Initialize MicroPython repl. Must be called before entering characters into the repl. ``` -mp_js_process_char(char) +await mp_js_process_char(char) ``` Input character into MicroPython repl. `char` must be of type `number`. This diff --git a/ports/webassembly/wrapper.js b/ports/webassembly/wrapper.js index ab92045df..e63abfffe 100644 --- a/ports/webassembly/wrapper.js +++ b/ports/webassembly/wrapper.js @@ -31,7 +31,7 @@ var mainProgram = function() mp_js_init = Module.cwrap('mp_js_init', 'null', ['number']); mp_js_do_str = Module.cwrap('mp_js_do_str', 'number', ['string'], {async: true}); mp_js_init_repl = Module.cwrap('mp_js_init_repl', 'null', ['null']); - mp_js_process_char = Module.cwrap('mp_js_process_char', 'number', ['number']); + mp_js_process_char = Module.cwrap('mp_js_process_char', 'number', ['number'], {async: true}); MP_JS_EPOCH = Date.now(); @@ -69,9 +69,11 @@ var mainProgram = function() process.stdin.setRawMode(true); process.stdin.on('data', function (data) { for (var i = 0; i < data.length; i++) { - if (mp_js_process_char(data[i])) { - process.exit() - } + mp_js_process_char(data[i]).then(result => { + if (result) { + process.exit() + } + }) } }); } else {