Change 'finite' param to 'maxTime' in delayGenerator
Allows delaying up to a specified amount of time before yielding false
This commit is contained in:
parent
27899c85b5
commit
1578675ace
|
@ -436,23 +436,30 @@ Zotero.Utilities.Internal = {
|
||||||
/**
|
/**
|
||||||
* A generator that yields promises that delay for the given intervals
|
* A generator that yields promises that delay for the given intervals
|
||||||
*
|
*
|
||||||
* @param {Array<Integer>} intervals An array of intervals in milliseconds
|
* @param {Array<Integer>} intervals - An array of intervals in milliseconds
|
||||||
* @param {Boolean} [finite=FALSE] If TRUE, repeat the last interval forever
|
* @param {Integer} [maxTime] - Total time to wait in milliseconds, after which the delaying
|
||||||
|
* promise will return false. Before maxTime has elapsed, or if
|
||||||
|
* maxTime isn't specified, the promises will yield true.
|
||||||
*/
|
*/
|
||||||
"delayGenerator": function (intervals, finite) {
|
"delayGenerator": function (intervals, maxTime) {
|
||||||
|
var totalTime = 0;
|
||||||
var lastInterval = intervals[intervals.length - 1];
|
var lastInterval = intervals[intervals.length - 1];
|
||||||
while (true) {
|
while (true) {
|
||||||
let interval = intervals.shift();
|
let interval = intervals.shift();
|
||||||
if (interval) {
|
if (interval) {
|
||||||
lastInterval = interval;
|
delay = lastInterval = interval;
|
||||||
yield Zotero.Promise.delay(interval);
|
|
||||||
}
|
}
|
||||||
else if (finite) {
|
else if (infinite) {
|
||||||
yield Zotero.Promise.delay(lastInterval);
|
delay = lastInterval;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
totalTime += delay;
|
||||||
|
|
||||||
|
Zotero.debug("Delaying " + delay + " ms");
|
||||||
|
yield Zotero.Promise.delay(delay).return(!maxTime || totalTime <= maxTime);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user