Use same lock values as mobile clients
[ProtonMail-WebClient.git] / packages / shared / lib / helpers / promise.ts
blobf6003a2033f77a04d687ec47f61d45bead431fcc
1 export const wait = (delay: number) => new Promise<void>((resolve) => setTimeout(resolve, delay));
3 /**
4  * Runs each chunk from a chunks array and waits after each one has run (unless it's the last one).
5  */
6 export const runChunksDelayed = async <T>(
7     chunks: number[][] = [],
8     cb: (index: number) => Promise<T>,
9     delay: number
10 ) => {
11     const promises = [];
13     for (let i = 0; i < chunks.length; ++i) {
14         promises.push(...chunks[i].map(cb));
15         if (i !== chunks.length - 1) {
16             await wait(delay);
17         }
18     }
20     return Promise.all(promises);
23 export const createPromise = <T>() => {
24     let resolve!: (value: T | PromiseLike<T>) => void;
25     let reject!: (reason?: any) => void;
27     const promise = new Promise<T>((innerResolve, innerReject) => {
28         resolve = innerResolve;
29         reject = innerReject;
30     });
32     return { promise, resolve, reject };