Понимание того, как использовать асинхронные функции в Javascript — счетчики и таймеры?

#javascript #surveyjs

#javascript #surveyjs

Вопрос:

Я пытаюсь создать небольшую страницу, на которой выполняется опрос. Я бы хотел, чтобы опрос повторялся на странице, но пользователю необходимо ввести имя пользователя при входе на страницу. Я пытаюсь написать код таким образом, чтобы они заполняли логин, а затем начинался опрос. Я пытаюсь создать JSON, который загружает более 100 случайных изображений, отправляя новое каждый раз, когда пользователь завершает приложение для опроса.

Итак, что происходит, так это каждый раз, когда вызывается функция запуска, запускается функция опроса. Однако он работает всего около 1 секунды, а не непрерывный запуск, который я хотел бы иметь. Когда я поиграл с упорядочением страницы и добавил таймеры, мне удалось добиться того, чтобы опрос выполнялся один раз, но не сбрасывался по завершении. Похоже, он также не собирает переменные из другой функции — я хотел, чтобы переменная «count» увеличивалась по мере повторного завершения опроса. Он также не получает переменную username, которая создается внутри внешней функции «start».

Я думаю, что моя проблема здесь связана с непониманием того, как функции и переменные должны быть вложены друг в друга, и с тем, как работает асинхронность в Javascript. Кто-нибудь может указать мне правильное направление? Вот JSfiddle для проблемы и фрагмент кода:

 //button Login
function serv (){

      Survey
          .StylesManager
          .applyTheme("modern");

          window.survey = new Survey.Model(json);

              survey
                  .onComplete
                  .add(function (result) {
                      count   ;
                      var PID = username;
                      var results = PID   "|||"   (keyname)   ":n"   JSON.stringify(result.data, null, 3)   (count) ;
                      document
                          .querySelector('#surveyResult')
                          .textContent = results;
                  survey.clear();
                  survey.render();
                  });

              $("#surveyElement").Survey({model: survey});
      }

function start() {
    var username = document.getElementById("user_PID").value;
    alert("your PID is "   username);
    modal.style.display = "none";
    serv();
    }

var knlist = {}

var count = 13

var knx = ("kn"   count)

var keyname = (knlist[knx])

var mapilink = "https://images.mapillary.com/"   (keyname)   "/thumb-1024.jpg";

var json = {}

var modal = document.getElementById('id01');
 

Комментарии:

1. Я, вероятно, просто упускаю что-то очевидное, но что именно здесь является асинхронным?

2. Хорошо, возможно, тогда это проблема! Я предполагал, что мне нужно использовать asnychronysness, чтобы опрос выполнялся повторно с течением времени.