gpt4 book ai didi

javascript - 重复回调函数的最佳实践?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:35:44 24 4
gpt4 key购买 nike

在我的代码中,我使用了很多(命名的)回调函数,只是举一个简单的例子:

function showThis(callback) {

// Do something

if (callback && typeof(callback) === 'function') {
callback();
}

}

现在我在不同的函数中重复这种模式(我说的是回调部分),那么如果我制作一个通用的回调处理函数并将其包含在内是否会更好?

类似于:

function doCallback(callback) {

if (callback && typeof(callback) === 'function') {
callback();
}

}

function showThis(callback) {

// Do something

doCallback(callback);
}

我认为保持代码干燥更好,但我不确定。非常感谢任何帮助!

最佳答案

在我看来,没有必要使用回调处理程序。在不同的情况下,您可能需要使用不同的上下文调用回调(例如 callback.call(ob...callback.apply(obj...)。所以您将需要回调处理程序的一个额外参数(上下文)。另一件不太令人愉快的事情是您可能需要将自定义参数传递给回调。使用回调处理程序,您可以通过传递所有将参数放入数组中并在其上应用函数。类似...:

function callbackHandler(callback, arguments, context) {
if (typeof callback === 'function') {
return callback.apply(context, arguments);
}
return null;
}

但是有那么多可选参数...另一件事是你正在做的检查:

if (callback && typeof callback === 'function') //notice that typeof is an operator not a function, so you don't need parentless

实际上不是必需的,这就足够了:typeof callback === 'function'

只有当 callback 被评估为 false 时,第一个条件才会返回 false 但如果它被评估为 false typeof callback 不会返回 function。所以条件足够短。

这就是为什么我认为您不需要回调处理程序的原因。顺便说一句,我喜欢这样的话题! :-)

关于javascript - 重复回调函数的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13432340/

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