kopia lustrzana https://github.com/micropython/micropython
45 wiersze
982 B
JavaScript
45 wiersze
982 B
JavaScript
// Test asyncio.create_task(), and tasks waiting on a Promise.
|
|
|
|
const mp = await (await import(process.argv[2])).loadMicroPython();
|
|
|
|
globalThis.p0 = new Promise((resolve, reject) => {
|
|
resolve(123);
|
|
});
|
|
|
|
globalThis.p1 = new Promise((resolve, reject) => {
|
|
setTimeout(() => {
|
|
console.log("setTimeout resolved");
|
|
resolve(456);
|
|
}, 200);
|
|
});
|
|
|
|
mp.runPython(`
|
|
import js
|
|
import asyncio
|
|
|
|
async def task(id, promise):
|
|
print("task start", id)
|
|
print("task await", id, await promise)
|
|
print("task await", id, await promise)
|
|
print("task end", id)
|
|
|
|
print("start")
|
|
t1 = asyncio.create_task(task(1, js.p0))
|
|
t2 = asyncio.create_task(task(2, js.p1))
|
|
print("t1", t1.done(), t2.done())
|
|
print("end")
|
|
`);
|
|
|
|
// Wait for p1 to fulfill so t2 can continue.
|
|
await globalThis.p1;
|
|
|
|
// Wait a little longer so t2 can complete.
|
|
await new Promise((resolve, reject) => {
|
|
setTimeout(resolve, 10);
|
|
});
|
|
|
|
mp.runPython(`
|
|
print("restart")
|
|
print("t1", t1.done(), t2.done())
|
|
`);
|