任务管理器

实现一个任务管理器,这里面执行的函数都是异步函数,然后管理器内部最多只能同时执行两个函数。

设置一个 函数数组fnArray,一个参数数组paramsArray,一个计数器count

返回一个对象,里面执行run

run方法,每次往函数数组,参数数组push对应的内容,执行 异步函数

执行异步函数方法中,判断count和函数数组的长度,每次从头取函数数组,参数数组,count++,执行,执行后count–,循环execute

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function taskManager() {
let fnArray = [];
let paramsArray = [];
let count = 0;
function run(fn) {
let param = Array.from(arguments).slice(1);
fnArray.push(fn);
paramsArray.push(param);
execute()
}
function execute() {
if(count < 2 && fnArray.length > 0) {
let fn = fnArray.shift();
let param = paramsArray.shift();
count++;
fn.apply(window, param).then(function() {
count--;
execute();
})
}
}
let o = {
run: run
}
return o;
}