我对Node.js有点陌生。在下面的代码中,我从API获取数据。
request.post({ url:endpoint, form: requestParams }, function (err, response, body) {
if (err) {
console.log("Error = " + err);
}
else {
let parsedBody = JSON.parse(body);
if (parsedBody.error_description) {
console.log("Error = " + parsedBody.error_description);
}
else {
// testFunc(AccessToken);
test = "Success!";
testFunc(test);
}
}
});
function testFunc(success){
Token = success;
console.log(Token);
}
// this code gives the error "Token is not defined" \/
console.log(Token);
在发布请求中,我将变量设置为“ test”。我希望能够将其用作全局变量,以便可以在get请求中使用它。
[i console.log()
“令牌”在“ testFunc”中时,它将正确记录。但是,当i console.log()
在函数之外时,它将给出错误Token is not defined
。
如何获得全局的“令牌”或“测试”变量,以便可以在另一个get请求中使用它?
提前感谢!
您的Token
是testFunc
上的局部变量
function testFunc(success){
Token = success;
console.log(Token);
}
尝试将Token
定义为全局变量您可以在所有导入require(...)之后或在request.post
let Token; //this is global declared variable
而且您的console.log
也不能与您的代码一样
作为您的问题I want to be able to use this as a global variable so i can use it in a get request.
所以您需要将console.log
放在request.get
内
类似
request.get('xxxxxx', , function(err) {
console.log("Token is " , Token);
});
您的request.post正在异步运行您可以使用request-promise lib
const request = require("request-promise");
并更改为
var result = await request(options);
或了解更多信息,请阅读此文章https://blog.risingstack.com/mastering-async-await-in-nodejs/
使用global
,您可以访问超出范围的变量值,请确保已使用global
关键字分配了该值。
您可以使用global
如下访问令牌:
request.post({ url:endpoint, form: requestParams }, function (err, response, body) {
if (err) {
console.log("Error = " + err);
}
else {
let parsedBody = JSON.parse(body);
if (parsedBody.error_description) {
console.log("Error = " + parsedBody.error_description);
}
else {
// testFunc(AccessToken);
test = "Success!";
testFunc(test);
}
}
});
function testFunc(success){
global.Token = success;
console.log(global.Token);
}
// this code will not give error now as "Token is not defined"
console.log(global.Token);