www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit 1578675ace837e847f21b950dc2a4aeadfb9ba8a
parent 27899c85b5f2e8d5363927626ab5466cc9eb7b65
Author: Dan Stillman <dstillman@zotero.org>
Date:   Tue, 12 May 2015 19:57:57 -0400

Change 'finite' param to 'maxTime' in delayGenerator

Allows delaying up to a specified amount of time before yielding false

Diffstat:
Mchrome/content/zotero/xpcom/utilities_internal.js | 21++++++++++++++-------
1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/chrome/content/zotero/xpcom/utilities_internal.js b/chrome/content/zotero/xpcom/utilities_internal.js @@ -436,23 +436,30 @@ Zotero.Utilities.Internal = { /** * A generator that yields promises that delay for the given intervals * - * @param {Array<Integer>} intervals An array of intervals in milliseconds - * @param {Boolean} [finite=FALSE] If TRUE, repeat the last interval forever + * @param {Array<Integer>} intervals - An array of intervals in milliseconds + * @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]; while (true) { let interval = intervals.shift(); if (interval) { - lastInterval = interval; - yield Zotero.Promise.delay(interval); + delay = lastInterval = interval; } - else if (finite) { - yield Zotero.Promise.delay(lastInterval); + else if (infinite) { + delay = lastInterval; } else { break; } + + totalTime += delay; + + Zotero.debug("Delaying " + delay + " ms"); + yield Zotero.Promise.delay(delay).return(!maxTime || totalTime <= maxTime); } },