javascript - 将数据传递给回调函数的最佳方法是什么?

标签 javascript function callback

我找不到与此事物相关的正确术语,所以我决定写一个问题。

我有这个功能:

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 类型。 successerror 方法都不关心回调返回什么,你也不关心。无论您是否传递结果都没有任何区别,无论如何在您的情况下它都是未定义

因此,请使用较短的解决方案,不带任何返回

有时您仍然会看到使用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/

相关文章:

php - 在中间停止 curl 转移

javascript - 每秒更新 Javascript 中的倒计时时间

javascript - 无法动态获取谷歌 Material 条形图中的值

c - 在函数原型(prototype)中的 char * param 中添加/*const*/而不是 const 限定符

Objective-C 调用 C 函数 - 链接器命令失败,退出代码为 1

javascript - javascript 中特定调用的所有 ajax 回调的一个入口点

java - 为什么 Android Activity 中的方法回调必须是静态的?

javascript - 使用 Url 中的哈希值重新加载页面 (F5)

Javascript 闭包对象生命周期

python - 如何在类中调用函数?