我试图传递一些参数的函数用作回调,我怎么能这样做?
这是我的尝试: 函数tryMe(param1, param2) { Alert (param1 + " and " + param2); } 函数callbackTester(回调,param1, param2) { 回调(param1 param2); } callbackTester(tryMe, "hello", "goodbye");
我试图传递一些参数的函数用作回调,我怎么能这样做?
这是我的尝试: 函数tryMe(param1, param2) { Alert (param1 + " and " + param2); } 函数callbackTester(回调,param1, param2) { 回调(param1 param2); } callbackTester(tryMe, "hello", "goodbye");
当前回答
我试图传递一些参数的函数用作回调,我怎么能这样做?
我认为他是在暗示他想调用这个callbackTester函数(tryMe, "hello", "goodbye")。为此,我们可以使用Rest操作符(…)。该操作符接受函数接收到的参数,并将它们转储到一个实数组中,我们将在回调函数中使用该数组进行访问。
现在,其他一些开发人员可能也认为我们可以使用参数"array"。那很好,但我们要小心。Arguments不是一个真正的数组,而是一个具有length属性的类数组对象。
下面是一个使用Rest操作符的工作代码片段:
函数tryMe(参数){ console.log(参数。加入(',')); } 函数callbackTester(回调,…params) { 回调(params); } callbackTester(tryMe, 'hello', 'goodbye', 'hi again'); callbackTester(tryMe, 'hello', 'goodbye'); callbackTester (tryMe '你好');
其他回答
当你有一个回调函数,它将被你的代码以外的东西调用,具有特定数量的参数,你想传递额外的参数,你可以传递一个包装器函数作为回调,并在包装器内部传递额外的参数。
function login(accessedViaPopup) {
//pass FB.login a call back function wrapper that will accept the
//response param and then call my "real" callback with the additional param
FB.login(function(response){
fb_login_callback(response,accessedViaPopup);
});
}
//handles respone from fb login call
function fb_login_callback(response, accessedViaPopup) {
//do stuff
}
如果你想要一些更一般的东西,你可以像这样使用arguments变量:
函数tryMe(param1, param2) { Alert (param1 + " and " + param2); } 函数callbackTester(回调){ 回调参数(参数[1],[2]); } callbackTester(tryMe, "hello", "goodbye");
但除此之外,你的例子工作得很好(参数[0]可以用来代替测试器中的回调)
将作为参数传递的“子”函数包装在函数包装器中,以防止在调用“父”函数时计算它们。
function outcome(){
return false;
}
function process(callbackSuccess, callbackFailure){
if ( outcome() )
callbackSuccess();
else
callbackFailure();
}
process(function(){alert("OKAY");},function(){alert("OOPS");})
最近遇到了这个问题,要得到它(特别是如果父函数有多个参数做不同的事情,与回调无关,是将回调与它的参数放在一个箭头函数中作为参数传递。
function tryMe(param1, param2) {
alert(param1 + " and " + param2);
}
function callbackTester(callback, someArg, AnotherArg) {
callback();
}
callbackTester(()=> tryMe("hello", "goodbye"), "someArg", "AnotherArg");
...或者简单地说,如果你没有多个参数做其他的事情。
function tryMe(param1, param2) {
alert(param1 + " and " + param2);
}
function callbackTester(callback) {
callback();
}
callbackTester(()=> tryMe("hello", "goodbye"));
我一直在寻找同样的东西,最后得到了答案如果有人想要看的话,这是一个简单的例子。
var FA = function(data){
console.log("IN A:"+data)
FC(data,"LastName");
};
var FC = function(data,d2){
console.log("IN C:"+data,d2)
};
var FB = function(data){
console.log("IN B:"+data);
FA(data)
};
FB('FirstName')
另一个问题也贴在这里