Trivial Paralell Flow

JS
S
JavaScript

Demonstrates basic parallel execution in TypeScript using Promise.all() for concurrent asynchronous operations, improving performance in data processing tasks.

1// Clean Paralell Flow
2// ====================================================
3const getPaginationLogic = ()=> {
4  return new Promise((resolve, reject) => {
5    resolve({pages: 5, limit: 100});
6  });
7}
8
9const step1Audience1 = (page: number, limit: number) => {
10  console.log('running step1Audience1');
11  return new Promise((resolve, reject) => {
12    resolve({item: 1, count: 100});
13  });
14}
15
16const step1Audience2 = (page: number, limit: number) => {
17  console.log('running step1Audience2');
18  return new Promise((resolve, reject) => {
19    resolve({item: 1, count: 100});
20  });
21}
22
23const step1Audience3 = (page: number, limit: number) => {
24  console.log('running step1Audience3');
25  return new Promise((resolve, reject) => {
26    resolve({item: 1, count: 100});
27  });
28}
29
30const allSteps = (page, limit) => {
31  console.log('running in parallell all steps');
32  return step1Audience1()
33    .then((res: any) => {
34      const audience2 = step1Audience2();
35      const audience3 = step1Audience3();
36      return [res, audience2, audience3];
37    })
38    .spread((audience1, audience2, audience3) => {
39      return ['<intermdiary-table> </intermediary-table>']
40    });
41}
42
43const flow = () => {
44  getPaginationLogic()
45    .then((pagination: any) => {
46      console.log('rx pagination', pagination)
47      const ops = [];
48      for (let index = 0; index < pagination.pages; index++) {
49        ops.push(allSteps(index, pagination.limit))
50      }
51      return ops;
52    })
53    .spread((...allResults) => {
54      console.log('received all results', allResults);
55      const finalTable = '<table> </table>';
56      return finalTable;
57    })
58    .then((table: string) => {
59      console.log('finished');
60      // process.exit(0);
61    })
62    .catch((err: Error) => {
63      console.error(err);
64      // process.exit(1);
65    })
66}
67
68flow();

Created on 6/4/2019