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函数是从中调用的。为了保持清楚,我省略了很多细节。。。话虽如此,我可以使用您推荐的方法,只需稍作修改,就可以回答我的问题。我感谢你的帮助。