gpt4 book ai didi

javascript - 在函数中设置可选回调的最佳方法

转载 作者:行者123 更新时间:2023-11-30 08:12:31 25 4
gpt4 key购买 nike

在这样的函数中,可选的成功和错误回调的最佳实践是什么?这种方法有意义吗?我觉得有点臃肿。

函数声明:

var myFunc = function(myNumber, options){
options = options || {};
options.onSuccess = options.onSuccess || function(){};
options.onError = options.onSuccess || function(){};

var myNewNumber = myNumber * 2;

if(newVar > 10){
options.onSuccess(myNewNumber);
}else{
options.onError(myNewNumber);
}
}

通过回调调用它:

myFunc(2,{
onError: function(myNewNumber){
// do stuff
},
onSuccess: function(myNewNumber){
// do stuff
}
})

在没有回调的情况下调用它:

myFunc(2);

最佳答案

一些注意事项;

  1. options.onSuccess = options.onSuccess || function(){}; 正在检查成员是否存在,而不是检查其函数。

    您可能需要 options.onSuccess = (typeof options.onSuccess == "function") ? options.onSuccess : 函数 () { };

  2. onError也是如此

  3. 作为轻微的优化,您可以将空函数指向同一个函数;而不是潜在地重新创建它两次。如果你使用 jQuery,jQuery 定义 jQuery.noop() :

    options.onSuccess = options.onSuccess || jQuery.noop;
    options.onError = options.onSuccess || jQuery.noop;
  4. 在回调是异步的情况下,您会让自己对检查后更改的 options.onSuccessoptions.onError 持开放态度,但在触发回调之前;

    var myFunc = function(myNumber, options){
    options = options || {};
    options.onSuccess = options.onSuccess || function(){};
    options.onError = options.onSuccess || function(){};

    var myNewNumber = myNumber * 2;

    setTimeout(function () {
    if(newVar > 10){
    options.onSuccess(myNewNumber);
    }else{
    options.onError(myNewNumber);
    }
    }, 2000);
    }

    var obj = {
    success: function () { alert('foo'); },
    error: function () { alert('foo'); },
    };

    myFunc(10, obj);
    delete obj.success;
    delete obj.error;

    当回调被执行时,successerror 将是未定义的。

关于javascript - 在函数中设置可选回调的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8239921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com