Синхронное включение и задержка между двумя действиями - PullRequest
0 голосов
/ 04 июля 2019
let files = document.querySelectorAll('#app .File');
let downloadButton = document.querySelector('.button-download');

for (let file of files) { 
    file.click(); // click file
    setTimeout(() => {}, 1000); // delay of 1 sec between two clicks
    downloadButton.click(); // click download 
}

.. но, похоже, это не работает. for-of выполняется синхронно, но все равно просто загружает последний файл несколько раз.

1 Ответ

1 голос
/ 04 июля 2019

Если вам нужна функция «задержки», вы можете создать что-то вроде этого:

function delay (ms) {
  return new Promise(resolve => {
    setTimeout(resolve, ms)
  })
}

После этого все, что вам нужно сделать, это обернуть ваш код в функцию async, чтобы иметь возможностьиспользовать ключевое слово await при вызове функции «delay».

async function main () {
  let files = document.querySelectorAll('#app .File')
  let downloadButton = document.querySelector('.button-download')

  for (let file of files) { 
    file.click() // click file
    await delay(1000) // delay of 1 sec between two clicks
    downloadButton.click() // click download 
  }
}

main()
...