gpt4 book ai didi

javascript - JavaScript 中回调/promise 或全局变量的替代方案

转载 作者:行者123 更新时间:2023-12-03 03:34:53 26 4
gpt4 key购买 nike

我的问题是关于回调/ promise 或全局变量的更智能的解决方案/替代方案。

情况:我有一个事件驱动的程序。我知道函数 A 将计算我稍后需要的值 vA 将在程序开始时被调用。函数B可能会也可能不会被稍后的事件触发。

问题:如何在不使用回调的情况下将 vA 传递到 B,因为 B 不应由 A 调用,而应由某个事件调用。如何避免使用全局变量( since they are bad )?

最佳答案

您可以使用闭包。我的意思是 val 在函数 A 的范围内,并且事件监听器可以从函数 A 内“注册”。由于 val 将处于关闭状态,因此仍然可以访问它通过事件监听器,例如;

function A(n) {
var but = document.getElementById("me"),
res = document.getElementById("result"),
val = Math.floor(Math.random() * n) + 1;
but.addEventListener("click", function(e) {
res.textContent = val;
res.style.backgroundColor = '#' + Math.random().toString(16).substr(-6);
});
}

A(100);
<script src="index.js" defer></script>
<label for="me">To get the ready value please click</label>
<button id="me">me..!</button>
<p id="result"></p>

如您所见,该值在开始时仅同步计算一次,但每次都会计算背景颜色。

关于javascript - JavaScript 中回调/promise 或全局变量的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45915806/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com