Javascript: изменение глобальных переменных, но в функции без использования «Promise» - PullRequest
0 голосов
/ 02 июня 2018

там мой вопрос: как я могу изменить переменную "токен" глобально?Я хочу повторно использовать новое значение этого 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 голосов
/ 02 июня 2018

Ваша функция logontoparticle выполняет асинхронный код, что означает, что вы не знаете, когда она завершится, также из-за замыканий ваша переменная 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);
});

ps Я надеюсь, вы пройдете, также вам следует взглянуть на следующие темы:

  • Обещания
  • Чистые функции
...