У меня есть следующий метод в node.js с использованием cps
:
exports.execute = function (input, callback) {
var config = {...};
var conn = mysql.createConnection(config);
conn.connect(function (err) {
if (null !== err) {
var message = {
"level": "error",
"message": err
};
console.log(message);
callback(JSON.stringify(message));
}
});
/* cps for async */
cps.seq([
/**
* @function
* @name validate
* @param _
* @param handle
*/
function (ignore, handle) {
if (null !== input.test) {
conn.query(input.test.query, handle);
} else {
handle(null, null);
}
},
/**
* @function
* @name query
* @param res
* @param handle
*/
function (res, handle) {
if ((null === res && null === input.test) || true === input.test.validate(res)) {
if (input.query !== null) {
conn.query(input.query, handle);
} else {
handle(null, null);
return;
}
} else {
var message = {
"level": "error",
"message": input.test.error
};
console.log(message);
callback(JSON.stringify(message));
conn.end();
return;
}
},
function (res, handle) {
console.log("[RDS-BASE] Executing input action");
handle(null, input.action(res));
},
function (res, ignore) {
console.log("[RDS-BASE] Executing response");
if (null === res) {
var message = {
"level": "error",
"message": "Missing result"
};
console.log(message);
callback(JSON.stringify(message));
conn.end();
return;
}
callback(null, res);
conn.end();
return;
}
], handle);
};
Как я могу провести рефакторинг своего кода, используя Promise
или любым другим способом заменить cps
функциональные возможности.