1 | 'use strict';
|
2 |
|
3 |
|
4 | const asyncParamCallbacks = {
|
5 | 1: fn => (par1, callback) => Promise.resolve(fn(par1)).then(result => callback(null, result)).catch(error => callback(error)),
|
6 | 2: fn => (par1, par2, callback) => Promise.resolve(fn(par1, par2)).then(result => callback(null, result)).catch(error => callback(error)),
|
7 | 3: fn => (par1, par2, par3, callback) => Promise.resolve(fn(par1, par2, par3)).then(result => callback(null, result)).catch(error => callback(error)),
|
8 | };
|
9 |
|
10 | const asyncParamCallback = (fn, ...params) => {
|
11 | const asyncFn = asyncParamCallbacks[params.length];
|
12 |
|
13 | if (!asyncFn)
|
14 | throw new Error(`Async param callback function with ${params.length} parameters is not implemented yet.`);
|
15 |
|
16 | return asyncFn(fn);
|
17 | };
|
18 |
|
19 | module.exports = {
|
20 | asyncParamCallback,
|
21 | };
|