Javascript:更改全局变量,但在函数中不使用;“承诺”;
我的问题是:如何全局编辑变量“token”?我想重用该函数中定义的var的新值。我知道这不是那么容易做到的,但是有没有办法适应它,这样我就可以重用新的价值 我现在知道,我无法真正改变这一点,但如果我重用“令牌”,例如:Javascript:更改全局变量,但在函数中不使用;“承诺”;,javascript,variables,promise,Javascript,Variables,Promise,我的问题是:如何全局编辑变量“token”?我想重用该函数中定义的var的新值。我知道这不是那么容易做到的,但是有没有办法适应它,这样我就可以重用新的价值 我现在知道,我无法真正改变这一点,但如果我重用“令牌”,例如: console.log(token); 返回值是“变量未定义”,但我在顶部定义它 我的代码如下: //libary: var Particle = require('particle-api-js'); //neues Objekt: var particle = new
console.log(token);
返回值是“变量未定义”,但我在顶部定义它
我的代码如下:
//libary:
var Particle = require('particle-api-js');
//neues Objekt:
var particle = new Particle();
//username, psw. etc definieren:
var userName = 'email.adress';
var passWord = 'passssword';
//Scriptvariablen:
var token;
//Funktionen:
function logontoparticle(){
var test = particle.login({username: userName, password: passWord});
test.then(
function (data) {
token = data.body.access_token;
console.log('Logged In: with', token);
},
function (err) {
console.log('LoggingIn Feeehlgeschalgen', err);
}
);
}
logontoparticle();
console.log("at end", token);
最后我得到了回报:
"at end undefined"
"token1234567891010201239" (e.g.)
我不想使用:mockLogin和Promise。。。我想避免。。。谢谢 您的
logontoparticle
函数执行异步代码,这意味着您不知道它将在何时完成,而且,由于闭包,您的令牌
变量确实正在编写中,问题是您正在异步代码运行之前打印
您可以尝试以下方法:
var token;
//Funktionen:
function logontoparticle() {
var test = particle.login({ username: userName, password: passWord });
return test.then(
function(data) {
token = data.body.access_token;
console.log("Logged In: with", token);
},
function(err) {
console.log("LoggingIn Feeehlgeschalgen", err);
}
);
}
logontoparticle().then(function() {
console.log("at end", token);
});
p、 我希望你通过考试,同时你也应该关注以下主题:
- 许诺
- 纯函数
logontoparticle
函数执行异步代码,这意味着您不知道它将在何时完成,而且,由于闭包,您的令牌
变量确实正在编写中,问题是您正在异步代码运行之前打印
您可以尝试以下方法:
var token;
//Funktionen:
function logontoparticle() {
var test = particle.login({ username: userName, password: passWord });
return test.then(
function(data) {
token = data.body.access_token;
console.log("Logged In: with", token);
},
function(err) {
console.log("LoggingIn Feeehlgeschalgen", err);
}
);
}
logontoparticle().then(function() {
console.log("at end", token);
});
p、 我希望你通过考试,同时你也应该关注以下主题:
- 许诺
- 纯函数
测试是异步的,他将如何做?但您应该使用承诺。事实上,你已经使用了承诺——利用它!而且你不应该使用全局变量。你为什么要这样做?在你的承诺中,你的代币并没有像你期望的那样被设置好。检查f12是否有错误,并尝试使用它来调试您的函数。@slee423如果测试是异步的,他将如何做?