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