简化场景:
- 我在按钮上有一个点击事件
- 在事件中我调用了一个函数 X
- 函数 X 返回一个值
- 点击事件使用接收到的数据更改 DOM(实际上呈现一个 jQuery 模板)
示例代码:
$("button").click(function()
{
var response = FunctionX();
doTemplateRendering(response); //(*)
});
function FunctionX()
{
//some code
return some_value;
//The click event has finished, so now make a little adjust to the generated dom (*)
}
问题是:
- 我是否有办法确定点击何时从
FunctionX()
停止? - 或者有没有一种方法可以让
doTemplateRendering()
触发一些我可以从FunctionX()
中捕获的东西,所以我是否返回一个值并不重要,因为在某些时候我将能够执行我需要的额外代码
这背后的原因是这是框架的一部分,我无法更改点击事件。
最佳答案
您不能从函数返回一个值,然后在同一个函数中进行进一步处理。但是您可以使用 setTimeout()
安排一些代码稍后运行:
function FunctionX()
{
//some code
setTimeout(function() {
//The click event has finished, so now make a little adjust to the generated dom (*)
}, 5);
return some_value;
}
JS 是单线程的(如果我们忽略 web-workers),所以你传递给 timeout 的函数在点击事件完成后才会执行。
或者,您可以将第二个点击处理程序绑定(bind)到同一个按钮并在那里进行额外的处理 - jQuery 保证事件处理程序(对于相同的事件和元素)将按照它们绑定(bind)的顺序运行。
关于javascript - 使用 JavaScript 确定事件何时停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16083726/