Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.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 如何判断4是否平行;要求;回拨全部完成?_Javascript_Callback_Requirejs_Require - Fatal编程技术网

Javascript 如何判断4是否平行;要求;回拨全部完成?

Javascript 如何判断4是否平行;要求;回拨全部完成?,javascript,callback,requirejs,require,Javascript,Callback,Requirejs,Require,我有如下一些javascript代码: require([url0],f0); require([url1],f1); require([url2],f2); require([url3],f3); f0、f1、f2和f3是四个函数。 现在我有另一条指令。我想在所有四个函数都完成执行之后执行它。我应该将指令放在何处,还是应该更改现有代码的结构?您可以创建自己的函数,该函数接受多个参数,并在全部加载时调用回调: function requireMulti(data, doneFn) {

我有如下一些javascript代码:

require([url0],f0);
require([url1],f1);
require([url2],f2);
require([url3],f3);
f0
f1
f2
f3
是四个函数。
现在我有另一条指令。我想在所有四个函数都完成执行之后执行它。我应该将指令放在何处,还是应该更改现有代码的结构?

您可以创建自己的函数,该函数接受多个参数,并在全部加载时调用回调:

function requireMulti(data, doneFn) {
    var numRemaining = data.length;
    data.forEach(function(val, index) {        
        require([val.url], function() {
            --numRemaining;
            val.fn.apply(this, arguments);
            if (numRemaining === 0) {
                doneFn();
            }
        });
    });
}

// sample usage
requireMulti([
    {url: url0, fn: f0},
    {url: url1, fn: f1},
    {url: url2, fn: f2},
    {url: url3, fn: f3},
  ], function() {
    // everything is done here
});

您可以创建自己的函数,该函数接受多个参数,并在全部加载时调用回调:

function requireMulti(data, doneFn) {
    var numRemaining = data.length;
    data.forEach(function(val, index) {        
        require([val.url], function() {
            --numRemaining;
            val.fn.apply(this, arguments);
            if (numRemaining === 0) {
                doneFn();
            }
        });
    });
}

// sample usage
requireMulti([
    {url: url0, fn: f0},
    {url: url1, fn: f1},
    {url: url2, fn: f2},
    {url: url3, fn: f3},
  ], function() {
    // everything is done here
});

您可以创建自己的函数,该函数接受多个参数,并在全部加载时调用回调:

function requireMulti(data, doneFn) {
    var numRemaining = data.length;
    data.forEach(function(val, index) {        
        require([val.url], function() {
            --numRemaining;
            val.fn.apply(this, arguments);
            if (numRemaining === 0) {
                doneFn();
            }
        });
    });
}

// sample usage
requireMulti([
    {url: url0, fn: f0},
    {url: url1, fn: f1},
    {url: url2, fn: f2},
    {url: url3, fn: f3},
  ], function() {
    // everything is done here
});

您可以创建自己的函数,该函数接受多个参数,并在全部加载时调用回调:

function requireMulti(data, doneFn) {
    var numRemaining = data.length;
    data.forEach(function(val, index) {        
        require([val.url], function() {
            --numRemaining;
            val.fn.apply(this, arguments);
            if (numRemaining === 0) {
                doneFn();
            }
        });
    });
}

// sample usage
requireMulti([
    {url: url0, fn: f0},
    {url: url1, fn: f1},
    {url: url2, fn: f2},
    {url: url3, fn: f3},
  ], function() {
    // everything is done here
});

您可以考虑使用一个初始值为4的计数器,并在一个类中封装回调。

function CountDown(c, f) {
    this.counter = c;
    this.func = f;
    this.dec = function () {
        this.counter--;
        if (!this.counter) {
            this.func();
        }
    }
}

var counter = new CountDown(4, function () { alert('got all 4'); });
f0的所有功能中
<代码>f3,您可以包含类似

function f0() {
    // code
    counter.dec();
}

您可以考虑使用一个初始值为4的计数器,并在一个类中封装回调。

function CountDown(c, f) {
    this.counter = c;
    this.func = f;
    this.dec = function () {
        this.counter--;
        if (!this.counter) {
            this.func();
        }
    }
}

var counter = new CountDown(4, function () { alert('got all 4'); });
f0的所有功能中
<代码>f3,您可以包含类似

function f0() {
    // code
    counter.dec();
}

您可以考虑使用一个初始值为4的计数器,并在一个类中封装回调。

function CountDown(c, f) {
    this.counter = c;
    this.func = f;
    this.dec = function () {
        this.counter--;
        if (!this.counter) {
            this.func();
        }
    }
}

var counter = new CountDown(4, function () { alert('got all 4'); });
f0的所有功能中
<代码>f3,您可以包含类似

function f0() {
    // code
    counter.dec();
}

您可以考虑使用一个初始值为4的计数器,并在一个类中封装回调。

function CountDown(c, f) {
    this.counter = c;
    this.func = f;
    this.dec = function () {
        this.counter--;
        if (!this.counter) {
            this.func();
        }
    }
}

var counter = new CountDown(4, function () { alert('got all 4'); });
f0的所有功能中
<代码>f3,您可以包含类似

function f0() {
    // code
    counter.dec();
}

回调
this.func
仅在所有四个回调都完成时执行,因此触发器是
counter.dec()
。哦,我明白了,您建议修改代码,而不是解决外部问题。好的,对不起,回调
this.func
只有在四个回调都完成时才会执行,因此触发器是
counter.dec()
。哦,我明白了,你建议修改代码,而不是解决外部问题。好的,对不起,回调
this.func
只有在四个回调都完成时才会执行,因此触发器是
counter.dec()
。哦,我明白了,你建议修改代码,而不是解决外部问题。好的,对不起,回调
this.func
只有在四个回调都完成时才会执行,因此触发器是
counter.dec()
。哦,我明白了,你建议修改代码,而不是解决外部问题。好的,对不起