gpt4 book ai didi

javascript - 如何在异步函数节点js中访问所有函数和条件中的变量?

转载 作者:行者123 更新时间:2023-11-29 20:43:46 26 4
gpt4 key购买 nike

我想在函数内部和外部访问 k 和错误值。我已将 k 的值初始化为 0,并将错误初始化为空字符串。但是打印了 console.log("executed")

var  k = 0;
var error = "";

const { teamname, event_name, inputcount, name, roll } = req.body;
function check1(teamname, event_name, callback) {
Register.find({ teamname: teamname, eventname: event_name }, (err, docs) => {
callback(docs.length)
});
}
check1(teamname, event_name, function (e) {
if (e != 0) {
console.log("executed");
k = 1
}
});
console.log(k) // 0
console.log(error) // undefined

最佳答案

您可以使用 NodeJS 全局对象声明全局变量。但在你的情况下,你希望 k 为 1,但它是 0。因为 NodeJS 是异步,你应该在回调中使用 console.log(k)。

当您运行此程序时,console.log(k) 和 console.log(error) 在 check1 函数将值返回给回调之前执行。那是异步过程。所以你得到的 k 为 0。为了解决它,你应该在回调中使用 console.log

var k = 0;
var error = "error";

const { teamname, event_name, inputcount, name, roll } = req.body;
function check1(teamname, event_name, callback) {
Register.find({ teamname: teamname, eventname: event_name }, (err, docs) => {
callback(docs.length)
});
}
check1(teamname, event_name, function (e) {
if (e != 0) {
console.log("executed");
k = 1
}
console.log(k) // prints 0 or 1
console.log(error) // prints "error"
});

https://stackabuse.com/using-global-variables-in-node-js/

关于javascript - 如何在异步函数节点js中访问所有函数和条件中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54955077/

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