javascript – 为什么不从另一个函数调用函数而不是使用回调?

我有点困惑,不是关于使用什么回调,而是因为我看到在场景中使用的回调通常似乎将函数作为参数传递给另一个函数是没有必要的,因为你可以只调用你想要调用的函数在当前函数中的代码完成执行之后.例如:

function hello( a , b ) {
    var result = a + b; 
    myFunction();
}

myFunction() {
    //code
}

hello(1,2);

令人困惑的是,我已经看到很多例子,在一个场景中使用回调就像我写的第一个代码一样简单,在我看来根本不需要回调:

function hello(a, b, callback) {
    var result = a + b;
    callback();
}

myFunction() {
    //code
}

hello(1, 2, myFunction);

我在那里使用了一个回调但是我可以在代码执行后调用函数myFunction而不将myFunction作为参数传递.我理解一个框架或库不知道代码完成执行后你想要调用的函数的名称,所以传递你想要的函数稍后作为参数传递似乎有意义然后当你知道函数的名称你希望在函数中执行任何代码后调用,为什么不像我在第一个例子中那样调用它?我很感激你的帮助.谢谢

最佳答案
好处1

回调很漂亮的原因之一是你可以使用任何回调来调用你的函数:

hello(1, 2, myFunction1);
hello(1, 2, myFunction2);
...
hello(1, 2, anyFunctionAtAll);

如果没有将回调作为参数传递的可能性,那么你的hello将被绑定到始终执行myFunction,因为它已修复在你的函数代码上.

好处2

另一个原因是,使用回调可以防止长时间运行的阻塞.在函数操作完成后传递回调以运行,并且在处理它时,它会将控制权转回主事件循环而不是阻塞.

例如,如果您要执行这些操作:

hello(1, 2, myCallback);
console.log('Im not waiting for hello!')

如果你的myCallback函数花费太多时间处理,控制台操作不会等待它终止执行.

如果你想了解更多,知道任何其他javascript警告,我建议thisthis

结论

如果您认为自己无法从中获益,那么在您的方案中不需要回调.

转载注明原文:javascript – 为什么不从另一个函数调用函数而不是使用回调? - 代码日志