如何重构异步重复代码

时间:2015-10-06 21:46:12

标签: 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);
        }

        // do more...


        logger.debug({result: result});
        return callback(null, result);
    });
}

我对client.execute的所有异步调用都有内部回调重复。我想把它拉出来并用它来制作一个功能。所以它需要采用参数,记录器和回调函数。

如何制作一个功能呢? 之后,添加的功能会是什么样的?

1 个答案:

答案 0 :(得分:2)

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

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);
    });
}
相关问题