diff --git a/application/source/util/processing.mjs b/application/source/util/processing.mjs index 95c0f5932900989e18a3403f75173650ee67bb03..2f9ece33ba7006c63443c70dd928e9fe1ba1bfe2 100644 --- a/application/source/util/processing.mjs +++ b/application/source/util/processing.mjs @@ -5,14 +5,14 @@ * License text available at https://www.gnu.org/licenses/agpl-3.0.en.html */ -import { internalSymbol } from "../constants.mjs"; -import { Base } from "../types/base.mjs"; -import { getGlobalFunction } from "../types/global.mjs"; -import { isFunction, isInteger } from "../types/is.mjs"; -import { Queue } from "../types/queue.mjs"; -import { validateFunction, validateInteger } from "../types/validate.mjs"; +import {internalSymbol} from "../constants.mjs"; +import {Base} from "../types/base.mjs"; +import {getGlobalFunction} from "../types/global.mjs"; +import {isFunction, isInteger} from "../types/is.mjs"; +import {Queue} from "../types/queue.mjs"; +import {validateFunction, validateInteger} from "../types/validate.mjs"; -export { Processing }; +export {Processing}; /** * @private @@ -86,9 +86,8 @@ class Processing extends Base { * * So the execution time is timeout1+timeout1+timeout1+timeout2 * - * @param {int} timeout Timeout - * @param {function} callback Callback * @throw {TypeError} the arguments must be either integer or functions + * @param {...(int|function)} args */ constructor(...args) { super(); @@ -136,13 +135,17 @@ class Processing extends Base { */ run(data) { const self = this; - if (this[internalSymbol].queue.isEmpty()) { + if (self[internalSymbol].queue.isEmpty()) { return Promise.resolve(data); } - return this[internalSymbol].queue - .poll() - .run(data) + const callback = self[internalSymbol].queue.poll(); + + if (callback === null || callback === undefined) { + return Promise.resolve(data); + } + + return callback.run(data) .then((result) => { return self.run(result); });