Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/ui/banner-dispatcher/src/ |
Upload File : |
import { LaunchPriority, AutoLauncher, type LaunchItemOptions, type LaunchItemCallback } from 'ui.auto-launch'; import { Type, Text } from 'main.core'; export class Queue { #priority: LaunchPriority; #delay: number; #itemList: Object = {}; #enough: boolean = false; #launchPerHit: boolean = false; constructor(priority: LaunchPriority, delay: number, launchPerHit: boolean = false) { this.#delay = parseInt(delay, 10) * 1000; this.#priority = priority; this.#launchPerHit = launchPerHit; } add(callback: LaunchItemCallback, options: LaunchItemOptions = {}): void { if (this.#enough) { return; } if (!Type.isFunction(callback)) { throw new TypeError('Unexpected type "promise" argument, expected Promise or callback'); } const allowLaunchAfterOthers = !(this.#launchPerHit && Object.values(this.#itemList).length > 0); const id = Type.isStringFilled(options.id) ? options.id : Text.getRandom(); this.#itemList[id] = callback; AutoLauncher.register(callback, { ...options, delay: this.#delay, priority: this.#priority, allowLaunchAfterOthers, id, }); } getItems(): Object { return this.#itemList; } clean(): void { Object.keys(this.#itemList).forEach((id) => { this.remove(id); }); } enough(): void { this.#enough = true; } notEnough(): void { this.#enough = false; } stop() { this.clean(); this.enough(); } remove(id: string): void { AutoLauncher.unregister(id); } }