当前位置: 首页 > 知识库问答 >
问题:

javascript - 如何调整window对象addEventListener的执行顺序?

袁和通
2023-12-10

可以提升window对象addEventListener执行优先权吗?假设有这么两段监听代码,在不改变顺序的前提下,如何优先执行最后那条event的呢?

window.addEventListener("resize", () => console.log('默认优先级'));window.addEventListener("resize", () => console.log('最高优先级'));

我查阅这样文章:https://juejin.cn/post/7170976626807668772 ,将代码改成

window.addEventListener("resize", () => console.log('默认优先级'));window.addEventListener("resize", () => console.log('最高优先级'), false, 10);

打印结果不正确

默认优先级最高优先级默认优先级最高优先级默认优先级最高优先级

我看MDN好像并没有提到事件优先级,https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/...

请问有没有办法提升window对象addEventListener执行顺序吗?

共有1个答案

谢雅珺
2023-12-10

换种方式实现,把多个函数聚集在一个函数中。

const fn1 = () => console.log('默认优先级')const fn2 = () => console.log('最高优先级')window.addEventListener("resize", () => {    fn1()    fn2()})

如果有动态添加的需求,可以用数组控制一下:

const fn1 = () => console.log('默认优先级')const fn2 = () => console.log('最高优先级')const fnList = [fn1, fn2]window.addEventListener("resize", () => {    fnList.forEach((fn) => fn())})document.querySelector('#add').addEventListener("click", () => {    fnList.push(() => console.log('新添加'))})
 类似资料:
  • window对象 BOM的核心是window,它表示浏览器的一个实例,既是通过JavaScript访问浏览器窗口的一个接口,又是global对象。 全局作用域 由于window对象扮演着global对象的一个角色,因此在全局作用域中定义的变量、函数都会变成window对象的属性。 var age = 10; function sayAge () { alert(this.age); }

  • 概述 浏览器里面,window对象(注意,w为小写)指当前的浏览器窗口。它也是当前页面的顶层对象,即最高一层的对象,所有其他对象都是它的下属。一个变量如果未声明,那么默认就是顶层对象的属性。 a = 1; window.a // 1 上面代码中,a是一个没有声明就直接赋值的变量,它自动成为顶层对象的属性。 window有自己的实体含义,其实不适合当作最高一层的顶层对象,这是一个语言的设计失误。最

  • 概述 window对象的属性 window.name属性 window.innerHeight属性,window.innerWidth属性 window.pageXOffset属性,window.pageYOffset属性 iframe元素 Navigator对象 screen对象 window对象的方法 URL的编码/解码方法 window.getComputedStyle方法 window.m

  • 问题内容: 我使用jQuery。而且我不想在我的应用程序上进行并行AJAX调用,每个调用都必须等待上一个调用之后才能开始。如何执行呢?有帮手吗? 更新 如果我想知道XMLHttpRequest或jQuery.post的任何同步版本。但是顺序!=同步,我想要一个异步和顺序解决方案。 问题答案: 有比使用同步ajax调用更好的方法。jQuery ajax返回一个延迟,因此您可以使用管道链接来确保每个a

  • 我显示的三维对象中的ArFra缔约国。因此,我把. obj文件和. mtl文件放在sam部长级文件夹中。然后右键单击obj文件,选择导入Sceneform Asset以添加. sfa/. sfb文件。 所以我可以在标记图像时显示3d对象,但对象太大了。 这是我的. sfa文件详细信息 我认为它可以按比例部分调整大小,但我改变了值,它不会改变。同样大小 那么我如何调整3d对象的大小呢? 添加3d对象

  • BOM 的核心对象是window,它表示浏览器的一个实例。在浏览器中,window 对象有双重角色,它既是通过JavaScript 访问浏览器窗口的一个接口,又是ECMAScript 规定的Global 对象。这意味着在网页中定义的任何一个对象、变量和函数,都以window 作为其Global 对象,因此有权访问parseInt()等方法。 8.1.1 全局作用域 由于window 对象同时扮演着