如何将函数的值传递给async.waterfall函数

时间:2019-02-17 10:00:18

标签: javascript node.js async.js

我的代码有问题。我想从Mysql表中选择并考虑结果,对其进行更改并再次更新该表。问题是,代码会异步执行此操作,并且无法正常工作(首先执行所有SELECT,之后执行所有UPDATE)。因此,我使用async.js完成了工作,但仍然无法正常工作。因为我无法从调用者回调中传递出Selected值。因此,不可能通过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;

})

1 个答案:

答案 0 :(得分:0)

您需要在updateAgent方法中进行更改以检查以前的值并向其中添加新数据,或者您可以先检查任何特定项目的更新,然后收集它们以一次更新该字段。