UNPKG

765 BJavaScriptView Raw
1'use strict';
2
3
4const 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
10const 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
19module.exports = {
20 asyncParamCallback,
21};