Deno 程序的生命周期

Deno 支持浏览器兼容的生命周期事件 loadunload。可以使用这些事件在程序中提供用于安装(setup)和清理(cleanup)的代码

load事件的侦听器(listener)可以是异步(async)的,将被等待(await)。 ubload事件的监听器需要是同步的。这两项事件都不能被取消。

示例:

// main.ts
import "./imported.ts";

const handler = (e: Event): void => {
    console.log(`got ${e.type} event in event handler (main)` );
}

window.addEventListener("load", handler);

window.addEventListener("unload", handler);

window.onload = (e: Event): void => {
    console.log(`got ${e.type} event in onload function (main)`);
}

window.onunload = (e: Event): void => {
    console.log(`got ${e.type} event in onunload function (main)`);
}

console.log("log from main script")

运行结果:

注意:你可以同时使用 window.addEventListenerwindow.onload / window.onunload 来定义事件的处理程序

但是它们之间有一个区别,如上面的运行结果,所有通过 window.addEventListener 添加的侦听器都被运行。 但是 main.ts中定义的 window.onloadwindow.onunload 覆盖了 imported.ts 中定义的处理程序

最后更新于

这有帮助吗?