summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorelibdev <eli@elib.dev>2023-06-19 14:15:42 -0400
committerDamien George <damien@micropython.org>2023-06-27 15:27:29 +1000
commit813d559bc098eeaa1c6e0fa1deff92e666c0b458 (patch)
tree94f6a61446898fd7eaa0f0a640bc694e7c8ff080
parentb2ad7e238b4e6de86aef646d715cf9a8a5144807 (diff)
webassembly: Make mp_js_process_char asynchronous.
This may also call the garbage collector. Signed-off-by: Eli Bierman <eli@elib.dev>
-rw-r--r--ports/webassembly/README.md2
-rw-r--r--ports/webassembly/wrapper.js10
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 {