Как положить текст наконец в функцию setInterval? - PullRequest
0 голосов
/ 07 октября 2019

Я хотел бы наконец поместить текст в функцию, которая использует setInterval, но я не смог этого сделать, код приведен ниже -

 function checkInIntervals(howManyTimes, howOften) 
 {
     var T = window.open("", "MsgWindow","width=400,height=600"); 
     var counter = 0; 
     var interval = setInterval(function() 
     { 
        T.document.title = 'MIKE!'; counter++; 
        if (counter === howManyTimes) 
        { 
            clearInterval(interval); 
        } 
        // do something 
        T.document.write('Where are you?'); 
        T.document.write("<br/>"); 
        console.log(counter, 'iteration'); 
     }, howOften)

    T.document.write('This text needs to be placed last.');//problem 
    T.document.write("<br/>");
    T.document.close(); // problem
}
checkInIntervals(3, 1000);

Здесь T.document.write('This text needs to be placed last.'); появляется первыми исчезает из-за T.document.close();, но мне нужно «Этот текст должен быть помещен последним». наконец, чтобы появиться, мне также нужно иметь T.document.close();, так как мне нужно новое окно каждый раз, когда я запускаю функцию без предыдущего текста.

Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 07 октября 2019

Добавьте вещи, которые вы хотите сделать последними, в случае, если проверяет счетчик.

Вот рабочий пример: https://jsfiddle.net/mvhL9ct2/1/

JS:

function checkInIntervals(howManyTimes, howOften) {
  var T = window.open("", "MsgWindow", "width=400,height=600");
  var counter = 0;
  var interval = setInterval(function() {
      T.document.title = 'MIKE!';
      counter++;
      // do something 
      T.document.write('Where are you?');
      T.document.write("<br/>");

      if (counter === howManyTimes) {
        T.document.write('This text needs to be placed last.');
        T.document.write("<br/>");
        clearInterval(interval);
      }

      console.log(counter, 'iteration');
    },
    howOften)

  T.document.close(); // problem
}
checkInIntervals(3, 1000);
0 голосов
/ 07 октября 2019

Текст T.document.write('This text needs to be placed last.') появляется первым, потому что функция, переданная в setInterval, не выполняется немедленно. После вызова setTimeout выполнение продолжается, и следующая команда после этой функции - T.document.write('This text needs to be placed last.')

Чтобы сделать этот текст последним, вы должны поместить его перед clearInterval function

function checkInIntervals(howManyTimes, howOften) {
    var T = window.open("", "MsgWindow","width=400,height=600"); 
        var counter = 0; 
    var interval = setInterval(function() { 
      T.document.title = 'MIKE!'; counter++; 
      // do something 
      T.document.write('Where are you?'); 
      T.document.write("<br/>");

      if (counter === howManyTimes) { 
        T.document.write('This text needs to be placed last.'); 
        T.document.write("<br/>");
        clearInterval(interval);
        return; 
      } 

      console.log(counter, 'iteration'); }, 
    howOften)

    T.document.close(); // problem
}
checkInIntervals(3, 1000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...