javascript - 返回异步回调作为最佳实践?

标签 javascript node.js asynchronous

到目前为止,我从未返回过任何异步回调,我只是调用了它们。我不知道(愚蠢的我!)回调调用之后的代码也会被执行。

这表明了我的意思:

var asyncFunctionNoReturn = function(callback) {
    alert('Inside asyncFunctionNoReturn');
    callback();
    alert('Still inside asyncFunctionNoReturn');
};

var asyncFunctionReturn = function(callback) {
    alert('Inside asyncFunctionReturn');
    return callback();
    alert('You will never see me! :(');
};

asyncFunctionNoReturn(function() {
    alert('I am called back!');
});

asyncFunctionReturn(function() {
    alert('I am called back!');
});

对我来说,只有在回调调用后有代码时,这才有意义:

版本 1:

...
if(err) {
    callback(err);
} else {
    callback(null, data);
}

版本 2:

...
if(err) return callback(err);
return callback(null, data);

我见过这两个版本都被使用过。哪一项已被确立为“最佳实践”?

我的猜测是版本 2:

  • 更少的代码和更少的嵌套(-> 更好的可读性?)
  • 可以更好地扩展

我希望这不是太基于观点。

最佳答案

首先,我并不总是同意 Douglas Crockford 的观点(天啊,我说什么?;-)),但我认为他关于 if 语句的说法是正确的:它应该始终用括号( http://javascript.crockford.com/code.html )。

我不同意你的观点:更少的代码并不意味着更好的可读性,对我来说,第一个版本对于代码的意图更加明显。让我们现在拥有的(令人惊叹的)工具来担心缩小/丑化生产代码。

不过,您仍然可以(应该?)返回回调的结果。

所以我会写:

if (err) {
    return callback(err);
} else {
    return callback(null, data);
}

关于javascript - 返回异步回调作为最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28472269/

相关文章:

javascript - 使用 Angular-editable 中的函数返回 html 而不是字符串

javascript - 检查一个元素是否存在两个属性

javascript - 开发服务器端 node.js 的好的架构/模式是什么?

node.js - 我部署了我的项目,我收到此错误输入文件包含不受支持的图像格式

javascript - 如何从异步回调函数返回值?

c# - 将耗时的进程从我的 ASP.NET 应用程序中移走

c# - 如何访问失败的 Hangfire 作业

javascript - KnockOut 理解 ko.compulated 函数 return 语句中最后一个 "this"引用

javascript - 分离要在 React.js 中呈现的 HTML

javascript - Express 和 Node.js 异常 : 500 TypeError: fn is not a function