Глобальная переменная в интерфейсе



  • Всем привет, хочу выводить счетчик с глобальной переменной в интерфейс.
    Использую такой скрипт:

    setInterval(function() {
      Api.GetGlobalVariable("COUNTER").then(function(res) {
           $("#SuccessSend").html(res)
      })
    }, 1000);
    

    Работает как надо, но вот когда я стопаю скрипт получаю пустое значение.
    Подскажите пожалуйста как правильно оформить код, чтобы при завершении скрипта оставалось последнее значение переменной.



  • @dmitr said in Глобальная переменная в интерфейсе:

    Всем привет, хочу выводить счетчик с глобальной переменной в интерфейс.
    Использую такой скрипт:

    setInterval(function() {
      Api.GetGlobalVariable("COUNTER").then(function(res) {
           $("#SuccessSend").html(res)
      })
    }, 1000);
    

    Работает как надо, но вот когда я стопаю скрипт получаю пустое значение.
    Подскажите пожалуйста как правильно оформить код, чтобы при завершении скрипта оставалось последнее значение переменной.

    Можно создать функцию в событии Event stop останавливающее счётчик. Либо просто проверять переменную на пустоту.

    setInterval(function() {
      Api.GetGlobalVariable("COUNTER").then(function(res) {
           if(typeof(res) != "undefined") $("#SuccessSend").html(res);
      })
    }, 1000);
    


  • This post is deleted!


  • @fox said in Глобальная переменная в интерфейсе:

    Можно создать функцию в событии Event stop останавливающее счётчик.

    Помогло это решение, спасибо!



  • @fox если не сложно, то подскажите пожалуйста, можно ли узнать изменение числа глобальной переменной и задать условие?
    Например если оно стало больше на 1, то выполнять что то.



  • @fox не помогло, все равно после стопа получаю пустоту.

    У меня всё сработало, оказывается api возвращает пустое значение переменной:

    setInterval(function() {
      Api.GetGlobalVariable("COUNTER").then(function(res) {
           if(res != "") $("#SuccessSend").html(res)
      })
    }, 1000);
    

    0_1554440744483_8ab9df44-76d0-498f-acd7-4de29d291a6e-изображение.png

    Но setInterval() лучше остановить по завершению скрипта, я бы использовал такой код:

    var intervalID = setInterval(function() {
      Api.GetGlobalVariable("COUNTER").then(function(res) {
           if(res != "") $("#SuccessSend").html(res)
      })
    }, 1000);
    

    а в событие событии Event stop добавил бы очистку таймера clearInterval(intervalID);

          if(EventType == "stop")
          {
            clearInterval(intervalID);
            UIkit.tab($("#GlobalTabsHeader")[0]).show(1);
            $("#CardStatusRunning").hide()
            $("#CardStatusStopped").show()
            $("#ThreadsRunning").html("0")
            $("#BrowserNumber").html("0")
            $("#BrowserManualNumber").html("0")
            $("#BrowserManualMessage").hide()
          }
    

    @dmitr said in Глобальная переменная в интерфейсе:

    @fox если не сложно, то подскажите пожалуйста, можно ли узнать изменение числа глобальной переменной и задать условие?
    Например если оно стало больше на 1, то выполнять что то.

    На сколько я знаю api BAS не поддерживает событие onchange. Тут только так же циклом проверять. Можно в самой функции:

    var intervalID = setInterval(function() {
      Api.GetGlobalVariable("COUNTER").then(function(res) {
           if(res != "") $("#SuccessSend").html(res)
           if(res == 5) alert("Здесь могла быть ваша реклама")
      })
    }, 1000);
    

    или запускать функцию внутри функции:

    function advertising(q){
    alert(q)
    }
    
    var intervalID = setInterval(function() {
      Api.GetGlobalVariable("COUNTER").then(function(res) {
           if(res != "") $("#SuccessSend").html(res)
           if(res == 5) advertising("Здесь могла быть ваша реклама")
      })
    }, 1000);
    

    или внутри цикла изменять переменную, за которой следит другая функция. В общем как душе угодно :D



  • По второму вопросу немного, не то, но спасибо.

    Мне нужно проверить счетчик и если он увеличился хотя бы на единицу, то выполнять код.

    Обычное сравнение с числом не подойдет

    if(res == 5) alert("Здесь могла быть ваша реклама")
    

    Счетчик будет увеличиваться каждый раз и мне нужно отследить каждое его увеличение.



  • @dmitr said in Глобальная переменная в интерфейсе:

    По второму вопросу немного, не то, но спасибо.

    Мне нужно проверить счетчик и если он увеличился хотя бы на единицу, то выполнять код.

    Обычное сравнение с числом не подойдет

    if(res == 5) alert("Здесь могла быть ваша реклама")
    

    Счетчик будет увеличиваться каждый раз и мне нужно отследить каждое его увеличение.

    Так?

    var check
    var intervalID = setInterval(function() {
      Api.GetGlobalVariable("COUNTER").then(function(res) {
           if(res != "") $("#SuccessSend").html(res)
           if(res != check) {
               alert("Ура, значение изменилось")
               check = res
      })
    }, 1000);
    


  • @fox большое спасибо, теперь разобрался и все работает как надо :)


Log in to reply