JavaScript:引入顺序以强制执行代码 AFTER Event



首先,我创建一个空对象,每当单击按钮时,该对象应由某个数组更新。

您可以在步骤1步骤 2中看到这一点。


请注意,我在这里使用了示例代码。它不打算工作

步骤 1:创建对象

var obj = {};

步骤 2:创建按钮

Btn.addEventListener('click', () => {
const a = [..];
const b = [..];
const c = [..];}
obj['a']  = a;
obj['b'] = b;
obj['c']  = c;
);

第 3 步:使用更新的对象执行 Sth

console.log(obj)

问题

我以console.log((为例,当然我想用代码做其他事情。

但是,console.log(( 在 EventListener 之前执行。 我理解为什么会这样,但我如何改变这种行为?

我脑子里有一些东西,比如带有.then((的承诺技术。

请注意,我不想在 *addEventListener((** 功能中执行此操作,而是在它之外!

首先,很明显,你不能将处理代码放在脚本的顶层,因为它会立即执行(并且只执行一次(。

因此,您必须将处理放在一个函数中。由于出于某种原因,您不希望单击处理程序是该函数,因此请定义另一个:

var obj = {};
btn.addEventListener('click', () => {
obj.time = new Date;
process();
);
function process() {
console.log(obj);
}

你提到使用承诺和then.但是then还需要一个函数(作为它的参数(。但是由于您已经有一个回调函数(单击处理程序(,因此并没有带来太大的优势。

承诺不太合适的另一个原因是:承诺无法解析多次,因此您提供给其then方法的回调永远不会执行多次。要真正模仿多次点击的处理方式,您必须每次都创建一个新承诺,或者实现一个可观察量。所有这些只能让你走这么远:最后你仍然需要处理一个回调函数。

最新更新