Javascript回调函数和ajax函数的执行
我需要一些帮助来理解如何从这个问题开始 我需要为一个对象编写代码,该对象允许我们注册几个不同的函数来执行单个公共回调函数 对象的目的是执行所有已注册的函数,然后,一旦所有函数都完成,它就应该执行已定义的回调函数 比如说 如果调用MyFuncs.start,MyFuncs对象将开始异步执行所有注册的函数。一旦最后一个返回,它将最终执行回调函数 能否请一些人在线指导一些资源或帮助我知道如何开始这个问题 我已经写了一个代码来实现这一点,但我不知道为什么它不能给我想要的结果。 有人能在这方面帮助我吗?请告诉我这是否是正确的方法 我的代码是Javascript回调函数和ajax函数的执行,javascript,ajax,callback,Javascript,Ajax,Callback,我需要一些帮助来理解如何从这个问题开始 我需要为一个对象编写代码,该对象允许我们注册几个不同的函数来执行单个公共回调函数 对象的目的是执行所有已注册的函数,然后,一旦所有函数都完成,它就应该执行已定义的回调函数 比如说 如果调用MyFuncs.start,MyFuncs对象将开始异步执行所有注册的函数。一旦最后一个返回,它将最终执行回调函数 能否请一些人在线指导一些资源或帮助我知道如何开始这个问题 我已经写了一个代码来实现这一点,但我不知道为什么它不能给我想要的结果。 有人能在这方面帮助我吗?请
var MyNewClass=(function()
{
return function()
{
this.registeredFunctions=2;
this.count=0;
this.function1=function()
{
$.ajax(
{
url: '/echo/html/',
success: function(data)
{
alert('request complete');
this.markDone();
}
})
};
this.function2=function()
{
$.ajax(
{
url: '/echo/html/',
success: function(data)
{
alert('request complete');
this.markDone();
}
})
};
this.register=function(newFunction)
{
this['function'+(++registeredFunctions)]=newFunction;
};
this.start=function()
{
this.function1();
this.function2();
};
this.callback=function()
{
alert("I am callback");
};
this.markDone=function()
{
this.count++;
if(this.count==this.registeredFunctions)
{
alert("all function executed,calling callback now");
callback();
}
};
};
})();
$(document).ready(function()
{
$('.start').click(function(){
var o=new MyNewClass();
o.start();
});
});
注意:当使用jQuery时,我不能使用$。因为在这里,用户可以发送任何函数进行注册,并且没有必要让已定义的函数返回延迟对象
这就是我在这里不能使用$的原因
好的,我已经想出了解决办法,我把它贴在这里,这样对其他人会有一些帮助
下面给出了解决方案。这是我的js文件,其中定义了我的类和所有函数
var MyNewClass=(function()
{
return function()
{
this.registeredFunctions=0;
this.count=0;
this.register=function(newFunction)
{
this['function'+(++this.registeredFunctions)]=newFunction;
};
this.start=function()
{
for(var i=1;i<=this.registeredFunctions;i++)
this['function'+i]();
};
this.callback=function()
{
alert("I am callback");
};
this.markDone=function()
{
this.count++;
if(this.count==this.registeredFunctions)
{
alert("all function executed,calling callback now");
this.callback();
}
};
};
})();
$(document).ready(function()
{
$('.start').click(function(){
var o=new MyNewClass();
function a()
{
$.ajax(
{
url: '/echo/html/',
success: function(data)
{
alert('new complete');
o.markDone();
}
})
};
o.register(a);
o.start();
});
});