timequeue 4.0.3 → 4.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +3 -1
- package/dist/index.js +28 -4
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -14,6 +14,8 @@ declare class TimeQueue extends EventEmitter {
|
|
|
14
14
|
timeout: number;
|
|
15
15
|
private _isWorkerAsync;
|
|
16
16
|
private _timers;
|
|
17
|
+
private _generation;
|
|
18
|
+
private _clearing;
|
|
17
19
|
store: TimeQueue.Store;
|
|
18
20
|
active: number;
|
|
19
21
|
intransit: number;
|
|
@@ -34,7 +36,7 @@ declare class TimeQueue extends EventEmitter {
|
|
|
34
36
|
_next(): Promise<void>;
|
|
35
37
|
/**
|
|
36
38
|
* Empties the queue and kills the timers.
|
|
37
|
-
* Active tasks will still be completed.
|
|
39
|
+
* Active tasks will still be completed, but no longer update queue state.
|
|
38
40
|
*/
|
|
39
41
|
die(): Promise<void>;
|
|
40
42
|
}
|
package/dist/index.js
CHANGED
|
@@ -18,6 +18,8 @@ class TaskError extends Error {
|
|
|
18
18
|
class TimeQueue extends node_events_1.EventEmitter {
|
|
19
19
|
constructor(worker, options = {}) {
|
|
20
20
|
super();
|
|
21
|
+
this._generation = 0;
|
|
22
|
+
this._clearing = null;
|
|
21
23
|
// How many tasks are currently active.
|
|
22
24
|
this.active = 0;
|
|
23
25
|
// How many tasks are still being waited on,
|
|
@@ -40,6 +42,9 @@ class TimeQueue extends node_events_1.EventEmitter {
|
|
|
40
42
|
*/
|
|
41
43
|
push(...args) {
|
|
42
44
|
return __awaiter(this, void 0, void 0, function* () {
|
|
45
|
+
while (this._clearing) {
|
|
46
|
+
yield this._clearing;
|
|
47
|
+
}
|
|
43
48
|
// Returns a promise when no `callback` is given.
|
|
44
49
|
if ((this._isWorkerAsync && args.length === this.worker.length) ||
|
|
45
50
|
(!this._isWorkerAsync && args.length < this.worker.length)) {
|
|
@@ -78,6 +83,7 @@ class TimeQueue extends node_events_1.EventEmitter {
|
|
|
78
83
|
_process(args) {
|
|
79
84
|
return __awaiter(this, void 0, void 0, function* () {
|
|
80
85
|
const callback = args.pop();
|
|
86
|
+
const generation = this._generation;
|
|
81
87
|
let finished = false;
|
|
82
88
|
const every = ~~this.every;
|
|
83
89
|
let tookLongerThanEvery;
|
|
@@ -113,11 +119,14 @@ class TimeQueue extends node_events_1.EventEmitter {
|
|
|
113
119
|
throw Error('Callback from worker should only be called once');
|
|
114
120
|
}
|
|
115
121
|
callbackCalled = true;
|
|
122
|
+
// `finished` is a lifetime count, so stale tasks still count here.
|
|
116
123
|
this.finished++;
|
|
117
|
-
this.
|
|
124
|
+
const isCurrent = generation === this._generation;
|
|
125
|
+
if (isCurrent)
|
|
126
|
+
this.active--;
|
|
118
127
|
callback(err, result);
|
|
119
128
|
finished = true;
|
|
120
|
-
if (tookLongerThanEvery) {
|
|
129
|
+
if (isCurrent && tookLongerThanEvery) {
|
|
121
130
|
this._next();
|
|
122
131
|
}
|
|
123
132
|
};
|
|
@@ -152,11 +161,16 @@ class TimeQueue extends node_events_1.EventEmitter {
|
|
|
152
161
|
*/
|
|
153
162
|
_next() {
|
|
154
163
|
return __awaiter(this, void 0, void 0, function* () {
|
|
164
|
+
const generation = this._generation;
|
|
155
165
|
if (this.intransit <= this.concurrency) {
|
|
156
166
|
const task = yield this.store.getNextTask();
|
|
167
|
+
if (generation !== this._generation)
|
|
168
|
+
return;
|
|
157
169
|
if (task) {
|
|
158
170
|
this.active++;
|
|
159
171
|
yield this._process(task);
|
|
172
|
+
if (generation !== this._generation)
|
|
173
|
+
return;
|
|
160
174
|
if ((yield this.store.getQueueLen()) === 0) {
|
|
161
175
|
this.emit('empty');
|
|
162
176
|
}
|
|
@@ -170,17 +184,27 @@ class TimeQueue extends node_events_1.EventEmitter {
|
|
|
170
184
|
}
|
|
171
185
|
/**
|
|
172
186
|
* Empties the queue and kills the timers.
|
|
173
|
-
* Active tasks will still be completed.
|
|
187
|
+
* Active tasks will still be completed, but no longer update queue state.
|
|
174
188
|
*/
|
|
175
189
|
die() {
|
|
176
190
|
return __awaiter(this, void 0, void 0, function* () {
|
|
177
|
-
|
|
191
|
+
this._generation++;
|
|
178
192
|
for (const t of this._timers) {
|
|
179
193
|
clearTimeout(t);
|
|
180
194
|
}
|
|
181
195
|
this._timers = [];
|
|
182
196
|
this.intransit = 0;
|
|
183
197
|
this.active = 0;
|
|
198
|
+
const clearing = this.store.clear();
|
|
199
|
+
this._clearing = clearing;
|
|
200
|
+
try {
|
|
201
|
+
yield clearing;
|
|
202
|
+
}
|
|
203
|
+
finally {
|
|
204
|
+
if (this._clearing === clearing) {
|
|
205
|
+
this._clearing = null;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
184
208
|
});
|
|
185
209
|
}
|
|
186
210
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,6CAA2C;AAC3C,4DAAsC;AAGtC,MAAM,SAAU,SAAQ,KAAK;CAE5B;AAED,MAAM,SAAU,SAAQ,0BAAY;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|