javascript回调函数和参数 [英] javascript callback function and parameters
问题描述
我想要类似的东西。
function AjaxService()
{
this.Remove = function(id,call_back)
{
myWebService.Remove(id,CallBack)
}
function CallBack(res){
call_back(res);
}
}
所以我的调用程序将是这样
var xx = new AjaxService();
xx.Remove(1,successful);
function success(res)
{
}
此外,如果我想添加更多的参数到成功函数,我将如何achive它。
说如果我有这样的成功功能
var xx = new AjaxService
//如何用这些参数调用成功函数
//xx.Remove(1,success(22,33));
function success(res,val1,val2)
{
}
帮助将被缓解。
尊重
Parminder
一个函数工厂:
function generateSuccess(var1,var2){
return function(res){
// use res,var1 and var2 in here
}
}
xx.Remove(1,generateSuccess(val1,val2));
这里传递的不是 generateSuccess
函数,但是 generateSuccess
返回的匿名函数看起来像 Remove
所期望的回调。 val1
和 val2
传递到 generateSuccess
function generateSuccess(var1,var2){
return function(res){
// use res,var1 and var2 in here
}
}
var success = generateSuccess(val1,val2);
xx.Remove(1,success);
或者如果您喜欢内联:
xx.Remove(1,(function(var1,var2){
return function(res){
//这是你的成功函数
}
})(val1,val2));
不可读,但保存您命名工厂函数。如果你不是在循环中这样做,那么Xinus的解决方案也会比我的内联版本更好和更简单。但是请注意,在循环中,您需要双重关闭机制来断开从当前范围中的变量传递到回调函数的变量。
I want to something similar to this.
function AjaxService()
{
this.Remove = function (id, call_back)
{
myWebService.Remove(id, CallBack)
}
function CallBack(res) {
call_back(res);
}
}
so my calling program will be like this
var xx = new AjaxService();
xx.Remove(1,success);
function success(res)
{
}
Also if I want to add more parameters to success function how will I achive it. Say If i have success function like this
var xx = new AjaxService();
//how to call back success function with these parameters
//xx.Remove(1,success(22,33));
function success(res,val1, val2)
{
}
Help will be appretiated.
Regards Parminder
Use a closure and a function factory:
function generateSuccess (var1,var2) {
return function (res) {
// use res, var1 and var2 in here
}
}
xx.Remove(1,generateSuccess(val1,val2));
What you're passing here is not the generateSuccess
function but the anonymous function returned by generateSuccess
that looks like the callback expected by Remove
. val1
and val2
are passed into generateSuccess
and captured by a closure in the returned anonymous function.
To be more clear, this is what's happening:
function generateSuccess (var1,var2) {
return function (res) {
// use res, var1 and var2 in here
}
}
var success = generateSuccess(val1,val2);
xx.Remove(1,success);
Or if you prefer to do it inline:
xx.Remove(1,(function(var1,var2) {
return function (res) {
// this is your success function
}
})(val1,val2));
not as readable but saves you from naming the factory function. If you're not doing this in a loop then Xinus's solution would also be fine and simpler than my inline version. But be aware that in a loop you need the double closure mechanism to disconnect the variable passed into the callback function from the variable in the current scope.
这篇关于javascript回调函数和参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!