我找不到与此事物相关的正确术语,所以我决定写一个问题。
我有这个功能:
var methods = {
login: function(callback){
$someCustomService
.login() // This returns $http
.success(function(data){
// callback(true, data); --- doing this without using 'return' also works
return callback(true, data);
})
.error(function(data){
return callback(false, data);
})
}
};
调用函数:
$anotherCustomService.login(function(success, data){
if(success){
alert('Success');
}else{
alert('Fail');
}
console.log(data);
});
行 return callback(true, data);
工作得很好,但如果我将其更改为 callback(true, data);
而不使用 return
它也有效。现在我很困惑是否该使用什么。
编辑
顺便说一句,我问这个的主要原因是因为:
angular.noop
function foo(callback) {
var result = calculateResult();
(callback || angular.noop)(result);
}
它没有使用我在编写 JavaScript 函数时首先学到的任何 return
。
最佳答案
回调函数通常不返回任何内容,可以说它们是 void
类型。 success
和 error
方法都不关心回调返回什么,你也不关心。无论您是否传递结果都没有任何区别,无论如何在您的情况下它都是未定义
。
因此,请使用较短的解决方案,不带任何返回
。
有时您仍然会看到使用return
的回调,但仅限于 helping with control flow 。假设错误情况不传递数据,您可以编写
$anotherCustomService.login(function(success, data){
if(!success)
return alert('Fail');
// ^^^^^^
alert('Success');
console.log(data);
});
关于javascript - 将数据传递给回调函数的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25998632/