我如何构建这些回调以获取我想要的信息?

时间:2015-06-19 00:52:54

标签: javascript node.js scope

也许我一直在盯着我的代码太长时间,或者我在其他地方或其他地方使用了太多的回调,但我无法弄清楚这个问题的后勤工作。我知道if (value instanceof Date) { atributes.add(convertDateToString((java.util.Date) value)); } 中包含的值在回调函数中使用rows是正确的。我只是不知道如何把它带回表面,可以这么说。从传递params的其他函数调用util.inspect(rows),并且期望得到结果。

任何见解都会非常有用。

将node.js与Express和mysql包一起使用,如果这有所不同。

dbHandler()

1 个答案:

答案 0 :(得分:0)

尝试返回异步函数的结果是一种反模式,永远不会有效。

而是重组调用代码。

不喜欢这个 - 匿名回调不会返回给调用者

new_data = api_request_data(auth, request, 
      function(error, data){ 
          return data;
});
store(new_data);
update_screen(new_data);

更好

api_request_data(auth, request, 
       function(error, data){ 
          store(data);
          update_screen(data);
});

最佳

api_request_data(auth, request, 
       function(error, data){
          if (error){ 
                console.log(error);
                return;
          } 
          store(data);
          update_screen(data);
});

在您的代码中,数据管道看起来没问题。

connection.query(params.query_string, function (err, rows) {
        connection.release();
        if(!err) {
            res.json(rows);  // <<--- I want to get ahold of the value of `rows`
            //console.log(util.inspect(rows));
        }           
    });

node.js应用程序中的代码res.json(rows);将对包含rows中的数据的JSON字符串进行排队,以便写入res中引用的当前Web连接。

您的问题表明问题是此行不会将数据返回给dbHandler()的调用者,但是没有经过培训的node.js开发人员会发生这种情况。代码看起来正确,可以将rows中的数据传递到node.js应用程序的over-the-web客户端。