gpt4 book ai didi

node.js - 如何在node js中访问函数外部变量的值(node js with postgresql)

转载 作者:行者123 更新时间:2023-11-29 13:52:57 25 4
gpt4 key购买 nike

var pg = require('pg');
var conString = "postgres://postgres:abk@localhost/bot";

var res = [];

pg.connect(conString, function(err, client, done) {

if(err) {
return console.error('error fetching client', err);
}
client.query('SELECT * FROM bot.questions', function(err, result)
{

done();

if(err) {
return console.error('error running query', err);
}

res.push(result.rows[0]);
console.log(res); //inside function scope
});
});

console.log(res); // outside function scope

在函数内部调用的“console.log()”给出了正确的结果数组,但在函数外部相同的数组变量显示了一个数组。我已经尝试了很多东西,例如回调, promise Node js 中的功能,但无法在函数外看到生成的“res”。请建议我如何使“res”变量可从函数外部访问。

注意: 具体来说,我需要“console.log(res)”来打印上面代码中提到的函数外部的“res”。

最佳答案

res 变量确实可以在函数外访问,因为它是在函数外定义的

res 变量确实在函数外部填充,因为它被视为在函数内部填充

问题的根本原因是外部打印按时间顺序发生在内部事件之前,因为该函数是异步的,调用立即发出,并继续执行代码中的最后一行。

如果只是讲究获取外面的值,确实是这样

如果您只想在外部打印值,请使用延迟回调来打印内容

如果您想在外部对值进行后处理,则需要通过同步原语将连接函数与下一个函数链接起来。

希望这对您有所帮助。

关于node.js - 如何在node js中访问函数外部变量的值(node js with postgresql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37457832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com