如何摆脱咖啡脚本中自动生成的退货:
createHash = (password) ->
bcrypt.genSalt 10, (err, salt) ->
bcrypt.hash password, salt, (err, hash) ->
hash
我得到......
createHash = function(password) {
return bcrypt.genSalt(10, function(err, salt) {
return bcrypt.hash(password, salt, function(err, hash) {
return hash;
});
});
};
...但我希望找到一个没有回报的解决方案:
createHash = function(password) {
bcrypt.genSalt(10, function(err, salt) {
bcrypt.hash(password, salt, function(err, hash) {
return hash;
});
});
};
我是如何完成这项工作的?
答案 0 :(得分:0)
默认情况下,CoffeeScript函数返回其最后一个表达式的值,所以:
f = ->
# Bunch of interesting things...
6
相当于:
f = ->
# Bunch of interesting things...
return 6
因此return
出现在已编译的JavaScript中。
在JavaScript中,没有显式return
的函数会隐式返回undefined
,因此返回相同的内容:
function() { }
function() { return }
function() { return undefined }
将这两件事放在一起会给你两个选择:
在您的函数底部抛出undefined
,以明确的方式绕过隐式return
:
createHash = (password) ->
bcrypt.genSalt 10, (err, salt) ->
bcrypt.hash password, salt, (err, hash) ->
hash
undefined
undefined
或者更好的是,明确表示您在空return
时没有返回任何内容:
createHash = (password) ->
bcrypt.genSalt 10, (err, salt) ->
bcrypt.hash password, salt, (err, hash) ->
hash
return
return
第二个选项应该为您提供您正在寻找的JavaScript:
var createHash;
createHash = function(password) {
bcrypt.genSalt(10, function(err, salt) {
bcrypt.hash(password, salt, function(err, hash) {
return hash;
});
});
};