更好地了解 JavaScript 中的回调函数

2022-08-30 02:21:21

我理解将一个函数作为回调传递给另一个函数并让它执行,但我不明白这样做的最佳实现。我正在寻找一个非常基本的例子,就像这样:

var myCallBackExample = {
    myFirstFunction : function( param1, param2, callback ) {
        // Do something with param1 and param2.
        if ( arguments.length == 3 ) {
            // Execute callback function.
            // What is the "best" way to do this?
        }
    },
    mySecondFunction : function() {
        myFirstFunction( false, true, function() {
            // When this anonymous function is called, execute it.
        });
    }
};

在myFirstFunction中,如果我确实返回新的回调(),那么它就会工作并执行匿名函数,但这对我来说似乎不是正确的方法。


答案 1

你可以说

callback();

或者,如果要调整回调中的 值,也可以使用该方法。callthis

callback.call( newValueForThis);

函数内部将是任何东西。thisnewValueForThis


答案 2

您应该检查回调是否存在,并且是可执行函数:

if (callback && typeof(callback) === "function") {
    // execute the callback, passing parameters as necessary
    callback();
}

许多库(jQuery,dojo等)为其异步函数以及node.js所有异步函数(nodejs通常传递和回调)使用类似的模式。查看他们的源代码会有所帮助!errordata