我有一个简单的问题,但无法在网上找到任何答案。
在javascript函数中,其参数中有回调函数,必须内部总是有callback()
吗?如果callback()
有时只执行,可能会出现任何性能问题吗?
function do_this(param1, callback) {
param1.forEach(function(param) {
io.sockets.connected[param].emit('do this', function(res) {
if (res) callback();
});
});
}
请注意,在此代码中,不应始终调用callback()
。运行此功能时出现的任何潜在性能问题都会导致功能do_this()
的多次调用无法返回回调?
答案 0 :(得分:1)
不,仅针对逻辑问题。
如果不调用回叫,则意味着您的程序将无法知道它的调用会发生什么,但是关于性能,在您的示例中,在您获得emit回调后,而不是调用您的回调,功能将丢失最后一个链接,将成为垃圾收集器的食物,所以实际上它将被遗忘,并没有正式的性能影响。
但更好的是仍然使用一些结果信号,比如当我们有一个规则时 - 如果函数返回条件,它应该返回其他没有条件的东西,只是为了更好地理解数据流。
使用Promises
并最好始终解决/拒绝它们,否则您将无法确定程序状态。
最后 - 它会起作用但更好地避免这种模式。
答案 1 :(得分:0)
感谢您的回复。
我最终使用异步库实现了代码只是为了在callback
的末尾发出for..loop
,但我很好奇是否另一种方式暗示了任何性能损失。