let tail: Promise = Promise.resolve(); /** * Ставит функцию в очередь на выполнение. * Все функции выполняются последовательно, одна за другой. * Если функция выбрасывает ошибку, она логируется, * а выполнение очереди продолжается * @param fn функция */ export const runTaskInQueue = (fn: () => Promise) => { tail = tail.then(fn).catch((e) => { console.error("Dialog queue error", e); }); }; /** * Ждет, пока все пакеты попадающие в очередь не будут обработаны */ export const whenFinish = () => tail;