Javascript 如何重构异步重复代码

Javascript 如何重构异步重复代码,javascript,node.js,asynchronous,refactoring,Javascript,Node.js,Asynchronous,Refactoring,我有下面的代码片段,我想从重复的代码中重构(生成一个函数) function add(logger, client, args, callback) { client.execute('some command', args, function (err, result) { if (err) { logger.error({err: err}); return callback(err); }

我有下面的代码片段,我想从重复的代码中重构(生成一个函数)

function add(logger, client, args, callback) {

    client.execute('some command', args, function (err, result) {
        if (err) {
            logger.error({err: err});
            return callback(err);
        }

        // do more...


        logger.debug({result: result});
        return callback(null, result);
    });
}
我对client.execute的所有异步调用都复制了内部回调。我想把它拉上来,然后把它变成一个函数。因此,它需要获取参数、记录器和回调函数

我如何从中得到一个函数?
在此之后,函数add会是什么样子?

如果您稍微更改了代码中的顺序,您可以像这样重构它:

function logAndCallback(err, result, callback) {
    if (err) {
        logger.error({err: err});
        return callback(err);
    }
    logger.debug({result: result});
    return callback(null, result);
}

function add(logger, client, args, callback) {

    client.execute('some command', args, function (err, result) {
        if (!err) {
          // do more...
        }

        return logAndCallback(err, result, callback);
    });
}

你为什么要在回帖中返回任何东西?请你重新措辞你的问题好吗?我不明白你在问什么
返回回调(err)-返回此值有什么意义?
callback
是否返回有意义的内容?异步函数是否使用此返回值?噢,add函数本身。是的,由于该功能适用于现有框架,因此必须采用这种方式。有一个外部async.series,add函数是从中调用的。为了保持清楚,我省略了很多细节。。。话虽如此,我可以使用您推荐的方法,只需稍作修改,就可以回答我的问题。我感谢你的帮助。