Javascript:更改全局变量,但在函数中不使用;“承诺”;

Javascript:更改全局变量,但在函数中不使用;“承诺”;,javascript,variables,promise,Javascript,Variables,Promise,我的问题是:如何全局编辑变量“token”?我想重用该函数中定义的var的新值。我知道这不是那么容易做到的,但是有没有办法适应它,这样我就可以重用新的价值 我现在知道,我无法真正改变这一点,但如果我重用“令牌”,例如: console.log(token); 返回值是“变量未定义”,但我在顶部定义它 我的代码如下: //libary: var Particle = require('particle-api-js'); //neues Objekt: var particle = new

我的问题是:如何全局编辑变量“token”?我想重用该函数中定义的var的新值。我知道这不是那么容易做到的,但是有没有办法适应它,这样我就可以重用新的价值

我现在知道,我无法真正改变这一点,但如果我重用“令牌”,例如:

   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如果
测试是异步的,他将如何做?但您应该使用承诺。事实上,你已经使用了承诺——利用它!而且你不应该使用全局变量。你为什么要这样做?在你的承诺中,你的代币并没有像你期望的那样被设置好。检查f12是否有错误,并尝试使用它来调试您的函数。@slee423如果
测试是异步的,他将如何做?