如何判断4个并行的"require"回调是否全部完成?
How to judge if 4 paralleled "require" callbacks all finished?
我有一些 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
});
您可以考虑使用一个初始值为 4 的计数器和一个回调,封装在 class.
中
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();
}
我有一些 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
});
您可以考虑使用一个初始值为 4 的计数器和一个回调,封装在 class.
中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();
}