1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-26 16:09:27 -05:00
denoland-deno/cli/tests/testdata/followup_dyn_import_resolves/main.ts
Andreu Botella 38505db391
fix(modules): Immediately resolve follow-up dyn imports to a dyn imported module (#14958)
When a dynamically imported module gets resolved, any code that comes after an
await import() to that module will continue running. However, if that is the
last code in the evaluation of another dynamically imported module, that second
module will not resolve until the next iteration of the event loop, even though
it does not depend on the event loop at all.

When the event loop is being blocked by a long-running operation, such as a
long-running timer, or by an async op that might never end, such as with workers
or BroadcastChannels, that will result in the second dynamically imported module
not being resolved for a while, or ever.

This change fixes this by running the dynamic module loading steps in a loop
until no more dynamic modules can be resolved.
2022-06-25 20:56:29 +02:00

14 lines
425 B
TypeScript

// https://github.com/denoland/deno/issues/14726
// Any dynamic modules that are only pending on a TLA import should be resolved
// in the same event loop iteration as the imported module.
// Long-running timer so the event loop doesn't have a next iteration for a
// while.
setTimeout(() => {}, 24 * 60 * 60 * 1000);
await import("./sub1.ts");
// If we reach here, the test is passed.
console.log("Done.");
Deno.exit();