如何防止传入javascript函数的回调被触发

How to prevent a callback from firing that is fed into a javascript function

本文关键字:回调 函数 何防止 javascript      更新时间:2023-09-26

我有两个函数。

function function_a(callback) {
   if (some_condition===true) {
   callback // fire the callback
   }
}
function function_b() {
    ... do some action
}

我的脚本调用:

function_a(function_b());

也就是说,function_a()中的callback将是function_b()的执行。

然而,我并不总是希望function_b()被解雇。我只希望它在some_condition===true时激发(如在function_a()主体中)。

现在的问题是,每当我将回调函数输入到另一个函数的参数中时,它都会自动触发它,而无需运行函数的脚本来确定是否需要触发回调。

是我做错了什么,还是用了一些不同的方法?

谢谢!

您需要调用function_a(function_b);

现在您没有传递function_b本身,而是立即调用它并传递它的返回值。

您的function_a应该执行callback()而不是callback

括号会导致函数"execute"或"fire"。正如Comptonburger所说,去掉"脚本调用"的括号,但在回调中添加括号。

function function_a(callback) {
    if (some_condition === true) {
        callback(); // parentheses do the "firing"
    }
}
function function_b() {
    // ... do some action
}
// Script calls:
// No parentheses on function_b because we 
// don't want to "fire it" right here and now.
function_a( function_b );

您还可以将function_b()作为字符串传递,并在条件传递后对其求值。

function function_a(callback) {
   if (some_condition===true) {
       eval(callback); // fire the callback
   }
}
function function_b() {
    ... do some action
}
function_a("function_b()");