【问题标题】:How to return value from anonymous function nested in javascript (node.js) [duplicate]如何从嵌套在javascript(node.js)中的匿名函数返回值[重复]
【发布时间】:2016-12-06 03:05:42
【问题描述】:

我在尝试向变量 x 添加行时遇到问题。我不明白如何从另一个函数调用的匿名函数返回值。

var pgClient = new pg.Client(connectionString);
pgClient.connect();
var query = pgClient.query("SELECT * from sceglie");

var x = [];

query.on("row", function(row,result){
    result.addRow(row);
    x.push(row);
});

console.log(x);

【问题讨论】:

  • 你...不要。就这么简单。
  • @KevinB 但是有没有一种解决方案可以创建一个像函数 foo (query_string,DB_URL){} 这样的通用函数来返回这个数据库上的查询结果?
  • 匿名函数将异步运行(每次“row”事件发生时),console.log 将立即执行,因此此时x 将始终为空。你需要某种回调。
  • 不,不可能有一个函数返回异步操作的结果,除非异步操作在调用该函数之前已经完成。
  • 另一个相关的规范骗局:stackoverflow.com/questions/14220321/…

标签: javascript node.js postgresql


【解决方案1】:

没有办法做你想做的事。 Javascript 是一种同步语言,因为它逐行执行。所以这一行:

console.log(x)

将立即执行。 “on”函数只会在它被调用时执行,所以你的日志语句总是有空值。

Link to good article explaining JS environment

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-01
    • 2011-03-23
    • 2015-03-15
    • 1970-01-01
    • 2020-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多