我希望能够在回调中传递参数,但是从原始调用函数传递参数,并且使用下面的规定,例如给出:
function foo() {
var p = 5;
getDataFromServer(callBackFunction);
}
function callBackFunction(data) {
// I need value of 'p' here
...
}
function getDataFromServer(callback) {
// gets data from server
callback.call();
}
问题在于我不想更改函数getDataFromServer(), (即允许它接受另一个参数。)
这可能吗?感谢。
答案 0 :(得分:2)
是的,您可以使用闭包来执行此操作。
但是,很难为此提供代码,因为您的示例不明确。
我的猜测是你想要这样的东西:
function foo() {
var p = 5;
getDataFromServer(callBackFunction(p));
}
function callBackFunction(p) {
var closureOverP = function(data) {... something with p ...};
return closureOverP;
}
答案 1 :(得分:2)
是的,这很有用。
function foo() {
var p = 5;
getDataFromServer(function(){
callBackFunction(p)
});
}
答案 2 :(得分:1)
所以简单的anon函数不会这样做吗?
function foo()
{
var p = 5;
getDataFromServer( function()
{
callBackFunction( p );
} );
}
答案 3 :(得分:0)
这绝对是可能的,我会说功能编程语言的良好实践。但是你可以这样调用函数:
function getDataFromServer(callback) {
// gets data from server
callback();
}