首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在node.js中嵌套异步查询

在node.js中嵌套异步查询
EN

Stack Overflow用户
提问于 2013-08-16 09:12:04
回答 2查看 96关注 0票数 1

我正在尝试编写一个执行两个查询的函数,并且我希望能够在最终代码块中访问这两个记录集;我的代码看起来类似于:

代码语言:javascript
代码运行次数:0
运行
复制
295     connection.query(sql1, function selectDb(err, results, fields) {
296         if (err) {
297           throw err;
298         }
299
300         result = results[0];
301         console.log(result);
302
303         console.log(sql2);
304         connection.query(sql2, function selectDb(err, results, fields) {
305             if (err) {
306               throw err;
307             }
309         console.log(result);

问题是var结果保留了第一个记录集,直到第二个查询@304之后,并显示'undefined‘@309 (在以前的显示中设置了记录)。

我不知道如何将第一个记录集值传递给内部代码async code block @304;尝试将result作为参数添加;

代码语言:javascript
代码运行次数:0
运行
复制
304         connection.query(sql2, function selectDb(err, results, fields, result) {

结果仍未定义@309

感谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2013-08-16 10:18:25

  1. 回调参数名称完全由您选择。有一个规范告诉你什么将被传递到哪个参数中,插槽可能会被命名以帮助进一步描述,但它被传递到的实际参数的实际名称由你决定。对于将来阅读代码的其他人来说,保留预期的名称是一个好主意,但可以在合适的情况下进行更改。这意味着你可以在回调中使用results1和results2,而不仅仅是results,如果它有帮助的话。
  2. 你的第二个回调是一个闭包,可以读取定义它的块中的变量。
  3. 我听说给匿名函数回调命名是不好的做法。

?//变量sql1,sql2需要在下面的代码之前定义( connection.query(sql1,function(err,results1,fields1) { 295.1 var result;//不要让result成为全局的296If (err) { 297抛出错误;298 }299300Result= results1;301 console.log( result );302 303 console.log(sql2);304 connection.query(sql2,function(err,results2,fields2) { 305 if (err) { 306 throw err;307 } 309 console.log(result);310 console.log(results1);311 console.log(results2);312 });313 });

票数 3
EN

Stack Overflow用户

发布于 2013-08-16 11:40:02

将变量的名称从result改为app;现在起作用了;标签‘result’一定有什么神奇之处;使用了mysql.Connection。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18264297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档