-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
直接扔代码
interface TaskFunction {
(done: (result?: any) => void): void;
}
function all(taskFns: TaskFunction[], callback: (results: any[]) => void): void {
var results: string[] = [];
var pending = taskFns.length;
taskFns.forEach((taskFn, index) => {
taskFn(result => {
if (index in results) {
return;
}
results[index] = result;
if (--pending == 0) {
callback(results);
}
});
});
}
all([
done => {
done('hello');
},
done => {
setTimeout(() => {
done(', ');
}, 100);
},
done => {
setInterval(() => {
done('world');
}, 1000);
},
done => {
done('!');
}
], results => {
console.log(results.join('')); // 输出 hello, world!
})