javascript - 如何让 window.onbeforeunload 等待动画?

标签 javascript multithreading animation dom-events scriptaculous

考虑下面的 JavaScript 代码,启动动画库(即 scriptaculous)。

window.onbeforeunload = function(event) {
    document.body.fade();
}
离开页面是即时的,不会等待动画完成。尽管我到处都看到人们说 JS 不支持线程,但这里有一些东西是并行运行的,因为似乎一个不会等待另一个。我对线程是否正确,有什么方法可以实现我在这里尝试做的事情吗?

最佳答案

有点晚了,但我认为给出答案对于 future 的 SO 用户来说很有趣。
因此有多种方法可以将您的代码同步到此,因此您应该添加一个自定义服务员。

window.onbeforeunload = function(event) {
    document.body.fade();
    while ((new Date()).getTime() < (new Date()).getTime()) + (1 *1000));
}
我想你也可以尝试 promise :
function sleep(time) {
  return new Promise((resolve) => {
    setTimeout(() => {
      return resolve(null);
    }, time);
  });
}

window.onbeforeunload = async function(event) {
    document.body.fade();
    await sleep(1 * 1000);
}

关于javascript - 如何让 window.onbeforeunload 等待动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9405121/

相关文章:

css - 应该是:hover pseudo state style change work after CSS animation completes

ios - 设置 UIImage 动画的正确/干净的方法?

html - 纯 css 中的可折叠文本高度

javascript - 这个范围随着继承而丢失

java - Executors.newFixedThreadPool(1) 和 Executors.newSingleThreadExecutor() 之间的区别

Android 设备插入 USB 与未插入时的行为不同

c++ - 如何在 C++11 的 Mac OS X 上命名 std::thread?

javascript - 当对象属性未定义时默认为一个值

javascript - 如何在 Typescript 中创建自定义对象数组

javascript - 使用 jquery 对具有单个最大值的多个文本框值中的字符进行计数