Как запустить целую функцию перед переходом к следующему индексу (JavaScript) - PullRequest
0 голосов
/ 28 декабря 2018

Я пытаюсь запустить функцию, в которой я открываю новое окно с URL и закрываю новое окно через 1,5 секунды.Я пытаюсь выполнить цикл 3 раза.Однако код открывает все три новых окна вместе, а затем выполняет таймаут.Я хочу, чтобы следующее окно открывалось только после закрытия предыдущего.

function test(url){
  let a = window.open(url);
  a.focus();
  setTimeout(()=>{
    a.close();
  }, 1500);
};

const repl = 'mysite.com';

for(let i = 0; i < 3; i++){
  test(repl);
}

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Вы можете использовать асинхронную библиотеку, где вы найдете много методов, таких как foreach, каждый.Вы можете выполнять задачу как последовательно, так и параллельно, для синхронного запуска задачи. Вы можете использовать foreachlimit с лимитом 1, когда сначала выполняется одна задача, а затем начинается следующая итерация.

0 голосов
/ 28 декабря 2018

Если вы хотите, чтобы один запускался за другим, когда другой будет сделан, позвоните следующему.Например, что-то вроде этого

const reps = 3;
let i = 0;
function test(url){
  let a = window.open(url);
  a.focus();
  setTimeout(()=>{
    a.close();
    i++;
    if (i < 3) {
      test(url);
    }
  }, 1500);
};

const repl = 'mysite.com';
test(repl);
...