Jestem trochę nowy w Nodejs. W poniższym kodzie pobieram dane z 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);
W żądaniu postu ustawiam zmienną „test”. Chcę móc używać tego jako zmiennej globalnej, aby móc go użyć w żądaniu get.
Kiedy console.log()
"Token" w "testFunc" zarejestruje go poprawnie. Ale kiedy console.log()
znajduje się poza funkcją, daje to błąd Token is not defined
.
Jak mogę sprawić, aby zmienna „Token” lub „test” była globalna, aby móc jej użyć w innym żądaniu pobierania?
Z góry dziękuję!
2 odpowiedzi
Twój request.post działa asynchronicznie, możesz użyć request-promise lib
const request = require("request-promise");
I zmień na
var result = await request(options);
Lub po więcej informacji przeczytaj ten artykuł https://blog.risingstack.com/mastering-async-await-in -nodejs /
Twoja Token
jest zmienną lokalną na testFunc
function testFunc(success){
Token = success;
console.log(Token);
}
Spróbuj zdefiniować Token
jako zmienną globalną możesz mimo wszystko wstawić wymagania importu (...) lub powyżej request.post
let Token; //this is global declared variable
A także Twój console.log
nie może być taki jak Twój kod
Jako Twoje pytanie I want to be able to use this as a global variable so i can use it in a get request.
Więc musisz umieścić swoje console.log
wewnątrz request.get
Coś jak
request.get('xxxxxx', , function(err) {
console.log("Token is " , Token);
});
Podobne pytania
Nowe pytania
node.js
Node.js to oparte na zdarzeniach, nieblokujące, asynchroniczne środowisko wykonawcze we / wy, które korzysta z silnika JavaScript V8 firmy Google i biblioteki libuv. Służy do tworzenia aplikacji, które w dużym stopniu wykorzystują możliwość uruchamiania JavaScript zarówno po stronie klienta, jak i po stronie serwera, a zatem korzystają z możliwości ponownego wykorzystania kodu i braku przełączania kontekstów.