Запустить асинхронно \ ждать бесконечно - PullRequest
0 голосов
/ 20 октября 2019

Я хочу перебирать массив списков воспроизведения асинхронно и бесконечно. Но единственный цикл, который работает с async \ await, это цикл for..of, который я не могу понять, как сделать бесконечным.

   async function playback(playlist) {
        for (const item of playlist) {
        await play(item);
        console.log('finished waiting for ' + item.name);                  
    }

Ответы [ 2 ]

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

Вы можете использовать для без условия , чтобы сделать его бесконечным, и оператор по модулю % для циклического обхода элементов списка воспроизведения по кругу:

async function playback(playlist) {
  for (let i = 0;; i = (i + 1) % playlist.length) {
    const item = playlist[i];
    await play(item);
    console.log('finished waiting for ' + item.name);  
  }                
}
0 голосов
/ 20 октября 2019

Но единственный цикл, который работает с async \ await, это for..of loop

Нет. Вы можете использовать await везде внутри async function с, а также внутри while или for петель.

 async function playback(playlist) {
   while(true) {
    for (const item of playlist) {
      await play(item);                   
    }
  }
}
...