163 javascript function callback
我理解将一个函数传递给另一个函数作为回调并让它执行,但我不理解这样做的最佳实现.我正在寻找一个非常基本的例子,像这样:
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.
});
}
};
Run Code Online (Sandbox Code Playgroud)
在myFirstFunction中,如果我确实返回了新的callback(),那么它可以工作并执行匿名函数,但这对我来说似乎不是正确的方法.
kro*_*old 131
你可以说
callback();
Run Code Online (Sandbox Code Playgroud)
或者,call如果要调整this回调中的值,可以使用该方法.
callback.call( newValueForThis);
Run Code Online (Sandbox Code Playgroud)
函数内部this将是任何东西newValueForThis.
aru*_*ngh 90
您应该检查回调是否存在,并且是可执行函数:
if (callback && typeof(callback) === "function") {
// execute the callback, passing parameters as necessary
callback();
}
Run Code Online (Sandbox Code Playgroud)
许多库(jQuery的,道场等)的使用为他们的异步函数类似的模式,以及用于node.js的所有异步函数(通常的NodeJS传递error和data回调).查看他们的源代码会有所帮助!
Ion*_*tan 34
执行函数有三种主要可能性:
var callback = function(x, y) {
// "this" may be different depending how you call the function
alert(this);
};
Run Code Online (Sandbox Code Playgroud)
您选择的方法取决于:
Function.call, Function.apply的文档
回调是关于信号的,而"新"是关于创建对象实例.
在这种情况下,执行"callback();"会更合适.比"返回新的回调()"因为你没有做任何带有返回值的事情.
(并且arguments.length == 3测试真的很笨重,fwiw,更好地检查回调参数是否存在并且是一个函数.)
| 归档时间: |
|
| 查看次数: |
206838 次 |
| 最近记录: |