Trivial Paralell Flow
JS
S
JavaScriptDemonstrates 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