如何将函数的值传递给async.waterfall函数
我的代码有问题。我想从Mysql表中选择并考虑结果,更改它并再次更新该表。问题是,代码执行此操作是异步的,它将无法正常工作(它首先执行所有SELECT,然后执行所有UPDATE)。所以我使用async.js来完成工作,但仍然没有工作。因为我无法将所选值传递给调用者回调。因此无法通过async.waterfall将其传递给下一个回调。有任何想法吗?
async.waterfall([
function (callback) {
queryBuilder.selectAgent(connection, id, (agent) => {
// Here is the PROBLEM! I can't pass agent out of this
});
// Here agent will be undefined
callback(null, agent);
},
function (agent, callback) {
if (agent) {
// Some change on agent and pass it to next callback
}
callback(null, agent);
},
function (agent, callback) {
queryBuilder.updateAgent(connection, id, agent);
callback(null);
},
],
function (err) {
if (err) throw err;
})
回答如下:
您需要更改updateAgent
方法以检查先前的值并向其添加新数据或者您可以先检查任何特定项目的更新并收集它们以更新字段一次。