Javascript:更改全局变量但在函数中不使用“Promise”

时间:2018-06-01 21:32:41

标签: javascript variables promise

我的问题是:如何在全局范围内编辑变量“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 ......我想避免这种情况......谢谢!

1 个答案:

答案 0 :(得分:3)

你的token函数执行异步代码,这意味着你不知道它什么时候结束,因为封闭,你的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); }); 变量确实在写,问题是你在异步代码运行之前打印。

您可以尝试以下方式:

myCellArray ={2,2,1,1,{1,1,2,2,{1,2,{1,1,1,1,1}},2,2},{1,2,{1,2,2,2,2,2},2},{1,1},2,2,2,2,1,1,1,1,1};

P.S。我希望你通过,你也应该看看以下主题:

  • 承诺
  • 纯粹的功能