({ onError, onResult, onDone })
| 9 | |
| 10 | class AsyncParallelBailHookCodeFactory extends HookCodeFactory { |
| 11 | content({ onError, onResult, onDone }) { |
| 12 | let code = ""; |
| 13 | code += `var _results = new Array(${this.options.taps.length});\n`; |
| 14 | code += "var _checkDone = function() {\n"; |
| 15 | code += "for(var i = 0; i < _results.length; i++) {\n"; |
| 16 | code += "var item = _results[i];\n"; |
| 17 | code += "if(item === undefined) return false;\n"; |
| 18 | code += "if(item.result !== undefined) {\n"; |
| 19 | code += onResult("item.result"); |
| 20 | code += "return true;\n"; |
| 21 | code += "}\n"; |
| 22 | code += "if(item.error) {\n"; |
| 23 | code += onError("item.error"); |
| 24 | code += "return true;\n"; |
| 25 | code += "}\n"; |
| 26 | code += "}\n"; |
| 27 | code += "return false;\n"; |
| 28 | code += "}\n"; |
| 29 | code += this.callTapsParallel({ |
| 30 | onError: (i, err, done, doneBreak) => { |
| 31 | let code = ""; |
| 32 | code += `if(${i} < _results.length && ((_results.length = ${ |
| 33 | i + 1 |
| 34 | }), (_results[${i}] = { error: ${err} }), _checkDone())) {\n`; |
| 35 | code += doneBreak(true); |
| 36 | code += "} else {\n"; |
| 37 | code += done(); |
| 38 | code += "}\n"; |
| 39 | return code; |
| 40 | }, |
| 41 | onResult: (i, result, done, doneBreak) => { |
| 42 | let code = ""; |
| 43 | code += `if(${i} < _results.length && (${result} !== undefined && (_results.length = ${ |
| 44 | i + 1 |
| 45 | }), (_results[${i}] = { result: ${result} }), _checkDone())) {\n`; |
| 46 | code += doneBreak(true); |
| 47 | code += "} else {\n"; |
| 48 | code += done(); |
| 49 | code += "}\n"; |
| 50 | return code; |
| 51 | }, |
| 52 | onTap: (i, run, done, _doneBreak) => { |
| 53 | let code = ""; |
| 54 | if (i > 0) { |
| 55 | code += `if(${i} >= _results.length) {\n`; |
| 56 | code += done(); |
| 57 | code += "} else {\n"; |
| 58 | } |
| 59 | code += run(); |
| 60 | if (i > 0) code += "}\n"; |
| 61 | return code; |
| 62 | }, |
| 63 | onDone |
| 64 | }); |
| 65 | return code; |
| 66 | } |
| 67 | } |
| 68 |
nothing calls this directly
no test coverage detected