Angular JS / Javascript отслеживают, сколько раз был вызван процесс - PullRequest
0 голосов
/ 13 марта 2019

У меня есть код ниже, doProcess вызывался много раз в зависимости от myArray.length, теперь вопрос заключается в том, как я могу отслеживать, сколько раз вызывался doProcess, я пытался использовать счетчик, но, похоже, он не работаетиз любой идеи?Не беспокойтесь о процессе обработки, я уже сделал это возможным, я просто хочу отследить, сколько раз вызывался процесс обработки.

doProcess(myArray, 0);
        function doProcess(myArray, index) {
            if (myArray.length === index) {
                return;
            }

            data["users"] = array
            data["random_code"] = myArray[index];

            QuestionaireService.share_questionaire(me, data).then(function (response) {

                if (response.status == "200") {
                    doProcess(myArray, ++index);
                    count++;
                }
            });

             console.log("count", count)

        }

Ответы [ 3 ]

2 голосов
/ 13 марта 2019

В соответствии с вышеуказанным сообщением. Требуется только напечатать counter только один раз. Переведите запись в состояние if.

Попробуйте этот код.

var count = 0;

doProcess(myArray, 0);
    function doProcess(myArray, index) {
        if (myArray.length === index) {
            console.log("count", count)
            return;
        }

        data["users"] = array
        data["random_code"] = myArray[index];

        QuestionaireService.share_questionaire(me, data).then(function (response) {

            if (response.status == "200") {
                doProcess(myArray, ++index);
                count++;
            }
        });
    }
0 голосов
/ 13 марта 2019

Ваш счетчик увеличен хорошо.Но так как вы используете асинхронный вызов внутри функции doProcess, вопрос заключается в том, когда печатать счетчик?

Так что вы должны распечатать его, когда вы в нем, он не будет увеличиваться больше (поэтому, когда вы небольше не вызывать doProcess ()).

Попробуйте что-то вроде:

doProcess(myArray, 0);
function doProcess(myArray, index) {
   count++;
   if (myArray.length === index) {
      // Need to print it too if the process is over
      console.log("count: ", count);
      return;
   }

   data["users"] = array
   data["random_code"] = myArray[index];

   QuestionaireService.share_questionaire(me, data).then(function (response) {

      if (response.status == "200") {
         doProcess(myArray, ++index);
      } else {
         // Here, you know you are in the last call of doProcess()
         console.log("count: ", count)
      }
   });
}
0 голосов
/ 13 марта 2019

Почему вы не пытаетесь установить переменную вне вашей функции, а затем увеличить ее внутри:

  let counter = 0
  doProcess(myArray, 0);

  function doProcess(myArray, index) {
    counter += 1
    if (myArray.length === index) {
      return;
    }

    data["users"] = array
    data["random_code"] = myArray[index];

    QuestionaireService.share_questionaire(me, data)
    .then((response) => {

      if (response.status == "200") {
        doProcess(myArray, ++index);
        count++;
      }
    });

    console.log("count", count)

  }

  console.log("counter", counter)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...