36 lines
768 B
JavaScript
36 lines
768 B
JavaScript
|
|
// Test JavaScript await'ing on Python async functions.
|
||
|
|
|
||
|
|
const mp = await (await import(process.argv[2])).loadMicroPython();
|
||
|
|
|
||
|
|
globalThis.asyncTimeout = (ms) =>
|
||
|
|
new Promise((resolve) => setTimeout(resolve, ms));
|
||
|
|
|
||
|
|
mp.runPython(`
|
||
|
|
import js
|
||
|
|
|
||
|
|
def f0():
|
||
|
|
print("f0 run")
|
||
|
|
return 1
|
||
|
|
|
||
|
|
async def f1():
|
||
|
|
print("f1 run")
|
||
|
|
return 2
|
||
|
|
|
||
|
|
async def f2():
|
||
|
|
print("f2 start")
|
||
|
|
await js.asyncTimeout(0)
|
||
|
|
print("f2 end")
|
||
|
|
return 3
|
||
|
|
|
||
|
|
async def f3():
|
||
|
|
print("f3 start")
|
||
|
|
ret = await f2()
|
||
|
|
print("f3 end")
|
||
|
|
return ret + 1
|
||
|
|
`);
|
||
|
|
|
||
|
|
console.log("f0 return:", await mp.globals.get("f0")());
|
||
|
|
console.log("f1 return:", await mp.globals.get("f1")());
|
||
|
|
console.log("f2 return:", await mp.globals.get("f2")());
|
||
|
|
console.log("f3 return:", await mp.globals.get("f3")());
|