从节点中的几个嵌套回调中返回值

时间:2015-01-19 16:27:59

标签: javascript node.js callback node-mysql

我想从嵌套回调中返回值。以下是伪代码:

dataSetFinal = function1()
within function1
    database is queried to get dataSet1
    call function2, using dataSet1 as arguments
        within function2
        query database to get dataSet2
        return dataSet2
    return dataSet2

这是我试图让它发挥作用

dataSetFinal = function1("arg1", function(err, rows){
                    client.query(sql1, function(err,rows){
                        function2(rows[0].userId, function(err, rows){
                            client.query(sql2, function(err, rows){
                                return rows;
                            });
                        });
                    });
                });

但我无法弄清楚如何让function1返回function2' s" rows"。

1 个答案:

答案 0 :(得分:3)

你不能,并且在一定程度上,你不能。从理论上讲,您可以将值或引用传递给上层上下文并将其返回,但只有当两者之间的每个进程完全同步时才会起作用。

那该怎么办?回调是解决方案。您可以将另一个函数传递给外部方法,并使用所需的值调用该函数,而不是中继返回值。