Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions 04-Promise:异步并发限制器/01_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,19 @@ class Scheduler {

add(promiseCreater) {
let _resolve;
this.queue.push(promiseCreater);
const pro = new Promise(resolve => _resolve = resolve);
this.queue.push({ p: promiseCreater, r: _resolve});

const doNext = () => {
// 队列中存在任务,并且当前正在执行的任务数量小于最大值
debugger
if (this.queue.length && this.count < this.maxCount) {
if (this.queue.length && this.queue.length < this.maxCount) {
this.count++;
this.queue.shift()().then(() => {
const task = this.queue.shift();
task.p().then(() => {
// 任务执行结束,输出结果
debugger
_resolve(123); // 存在 resolve之后没有输出的情况
task.r(123); // 存在 resolve之后没有输出的情况
debugger
this.count--;

Expand All @@ -32,9 +34,7 @@ class Scheduler {

doNext();

return new Promise((resolve) => {
_resolve = resolve;
})
return pro;
}
}

Expand All @@ -57,4 +57,4 @@ addTask(4000, '3')
debugger
addTask(4000, '4')
debugger
// 结果: 2 3 1 4
// 结果: 2 3 1 4