我应该在JavaScript的回调函数中使用“ return”吗?

我在JS应用程序中使用异步函数,这些函数包装有接收回调输入的我自己的函数。当我调用回调函数时,是否需要使用“ return”关键字?有关系吗?有什么不同?

例如:

var getData = function(callback){

// do some aysnc db stuff...

return callback(results);

// or just

callback(results);

}

PS:我正在使用javascript编写混合移动应用。

回答:

如果只有一条路径通过函数,则可以将两种形式互换使用。当然,该函数的返回值将在没有返回的情况下是不确定的,但是您的调用代码可能仍未使用它。

没错

return callback()

实际上相当于

callback(result); return;

后者的确在调用堆栈上导致了额外的帧,因此使用了更多的资源。我想如果您有许多嵌套的回调,或者正在执行递归,那么您将更快地耗尽堆栈空间。

这可能是一个坏主意,我不认为我在说回调之前的返回更加惯用了。

如果函数中有多个路径,则必须小心。例如,这将按预期工作:

(cb)=> {

if (something) cb('a')

else cb('b')

}

但是,在这种情况下,两个回调都将被调用。

(cb)=> {

if (something) cb('a');

cb('b')

}

当您阅读以上内容时,很明显两者都会被调用。然而,编写这样的代码是一个经典的节点新手错误(尤其是在处理错误时)。如果要执行或要执行,则需要:

(cb)=> {

if (something) return cb('a');

cb('b')

}

以上是 我应该在JavaScript的回调函数中使用“ return”吗? 的全部内容, 来源链接: utcz.com/qa/428658.html

回到顶部