aboutsummaryrefslogtreecommitdiff
path: root/Timeline/ClientApp/src/app/data/queue.ts
blob: 001340a9f3191eee250d6b78029eb819a0e6e1cb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
const queueMap = new Map<string, Promise<null>>();

export function queue<T>(key: string, func: () => Promise<T>): Promise<T> {
  const last = queueMap.get(key);
  if (last == null) {
    const promise = func();
    queueMap.set(key, promise.then(null, null));
    return promise;
  } else {
    const promise = last.then(() => func());
    queueMap.set(key, promise.then(null, null));
    return promise;
  }
}