Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript回调函数和ajax函数的执行_Javascript_Ajax_Callback - Fatal编程技术网

Javascript回调函数和ajax函数的执行

Javascript回调函数和ajax函数的执行,javascript,ajax,callback,Javascript,Ajax,Callback,我需要一些帮助来理解如何从这个问题开始 我需要为一个对象编写代码,该对象允许我们注册几个不同的函数来执行单个公共回调函数 对象的目的是执行所有已注册的函数,然后,一旦所有函数都完成,它就应该执行已定义的回调函数 比如说 如果调用MyFuncs.start,MyFuncs对象将开始异步执行所有注册的函数。一旦最后一个返回,它将最终执行回调函数 能否请一些人在线指导一些资源或帮助我知道如何开始这个问题 我已经写了一个代码来实现这一点,但我不知道为什么它不能给我想要的结果。 有人能在这方面帮助我吗?请

我需要一些帮助来理解如何从这个问题开始

我需要为一个对象编写代码,该对象允许我们注册几个不同的函数来执行单个公共回调函数

对象的目的是执行所有已注册的函数,然后,一旦所有函数都完成,它就应该执行已定义的回调函数

比如说 如果调用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();
    });
});